Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сколько памяти занимает тип bool, 1 – байт или 1 – бит. 
:(
    Опции темы
JackYF
Дата 23.4.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Earnest @  23.4.2007,  18:41 Найти цитируемый пост)
JackYF, в твоем примере это вовсе не бул, хотя ты видишь это слово. Так же как второй элемент битовой структуры - вовсе не unsigned short... 


Ну с unsigned short - да, здесь понятно. Это я так, чтобы до восьми бит добить...
С bool - да, тут тоже, если формально подходить, то не bool.
Но вот функции свои - хранить/отдавать true/false он делает исправно.

sizeof(bool)==1, тут понятно.
Просто можно заюзать и более плотную схему, только и всего.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Mayk
Дата 23.4.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(ISO/IEC JTC 1/SC22/WG21 N2135 (в простонародье --- драфт с++ за ноябрь 2006-ого года))

  5.3.3   Sizeof                                                                                               [expr.sizeof]
  The sizeof operator yields the number of bytes in the object representation of its operand. The operand is either an
  expression, which is not evaluated, or a parenthesized type-id. The sizeof operator shall not be applied to an expression
  that has function or incomplete type, or to an enumeration type before all its enumerators have been declared, or to
  the parenthesized name of such types, or to an lvalue that designates a bit-field. sizeof(char), sizeof(signed
  char) and sizeof(unsigned char) are 1. The result of sizeof applied to any other fundamental type (3.9.1) is
  implementation-defined. [ Note: in particular, sizeof(bool) and sizeof(wchar_t) are implementation-defined.73)
  -- end note ] [ Note: See 1.7 for the definition of byte and 3.9 for the definition of object representation. -- end note ]

73) sizeof(bool) is not required to be 1.



Это сообщение отредактировал(а) Mayk - 23.4.2007, 19:00


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Earnest
Дата 23.4.2007, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(JackYF @  23.4.2007,  19:56 Найти цитируемый пост)
Но вот функции свои - хранить/отдавать true/false он делает исправно

Ну так я ведь могу написать с использованием флагов что-то вроде return (my_flags & boolFlag) != 0. Ровно то же самое и компилятор делает, только сам, за что спасибо.
Mayk, точно, вот вроде помнила, что не обязательно sizeof (bool) == 1, но сомневалась, потому как давно читала... Ясно только что не 8 микробит... smile 


--------------------
...
PM   Вверх
JackYF
Дата 23.4.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Earnest @  23.4.2007,  19:19 Найти цитируемый пост)
Ровно то же самое и компилятор делает, только сам, за что спасибо.

Да, конечно. Но, в принцие, это и есть назначение булевской переменной smile


Цитата(Mayk @  23.4.2007,  18:59 Найти цитируемый пост)
73) sizeof(bool) is not required to be 1.

Ну, со стандартом спорить глупо. Но хотел бы я посмотреть на компилятор, у которого sizeof(bool)>1. smile



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
betal
Дата 23.4.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 26.12.2006

Репутация: нет
Всего: 1



Цитата(Earnest @  23.4.2007,  15:51 Найти цитируемый пост)
Все, ребята, не заводитесь. 

 smile    smile 
--------------------
101100010100001101100001110100101111011легкие деньги
PM WWW ICQ   Вверх
Любитель
Дата 23.4.2007, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(JackYF @  23.4.2007,  19:30 Найти цитируемый пост)
Но хотел бы я посмотреть на компилятор, у которого sizeof(bool)>1

MS VC++/CLI. Это, конечно, не совсем плюсы - но всё-таки. Суть в том, что вполне реально.

Цитата(JackYF @  23.4.2007,  18:33 Найти цитируемый пост)
кстати, если подходить формально, то если бы бит делился, то в нем было бы10^(-6) микробит.

Во-первых - не минус явно. smile А то в одном бите дробное число микробит...  smile То есть микробит больше бита??? Во-вторых, скорее 2^20. Ведь килобиты, мегабиты такая судьба постигла...


--------------------
PM MAIL ICQ Skype   Вверх
Dude03
Дата 24.4.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.4.2006

Репутация: нет
Всего: 6



4 байта=) В стеке=). Вопрос уже неоднократно поднимался на форуме.
Мой совет: заюзайте возможность компилятора генерить ассемблерный листинг и загляните в него. И сразу станет легче жить=)
PM MAIL   Вверх
JackYF
Дата 24.4.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Любитель @  23.4.2007,  23:10 Найти цитируемый пост)
Во-первых - не минус явно.

Ну да - естественно, +.


Цитата(Любитель @  23.4.2007,  23:10 Найти цитируемый пост)
Во-вторых, скорее 2^20.

Ну вообще тут спорный вопрос. Компьютерные килобайты, мегабайты, гигабайты, терабайты и экзабайты переопределены...
А вообще микро - 10^-6...

Так что тут еще неизвестно  smile 


Цитата(Dude03 @  24.4.2007,  12:38 Найти цитируемый пост)
4 байта=) В стеке=)

Ну, переменные не всегда в стеке лежат smile



Цитата(Dude03 @  24.4.2007,  12:38 Найти цитируемый пост)
заюзайте возможность компилятора генерить ассемблерный листинг 

Не-е-е... smile Так неинтересно ;)

Цитата(Любитель @  23.4.2007,  23:10 Найти цитируемый пост)
MS VC++/CLI. Это, конечно, не совсем плюсы - но всё-таки. Суть в том, что вполне реально.

Хм... мдя. Ужас. А если еще похохмить, то компилятора ms vc++/cli я таки еще не видел smile



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Любитель
Дата 28.4.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(JackYF @  24.4.2007,  16:40 Найти цитируемый пост)
компилятора ms vc++/cli я таки еще не видел

Почему? Я в названии ошибся (если да - поправь, я не знал)? Компилер, строго говоря, там один - cl.exe, разные ключики...


--------------------
PM MAIL ICQ Skype   Вверх
JackYF
Дата 28.4.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Любитель @  28.4.2007,  17:01 Найти цитируемый пост)
Почему? Я в названии ошибся (если да - поправь, я не знал)? Компилер, строго говоря, там один - cl.exe, разные ключики...


Э  smile да нет, ты все правильно написал...

Я не видел этого компилятора. Ну то есть он есть, но я его не видел smile))

Цитата(JackYF @  24.4.2007,  16:40 Найти цитируемый пост)
А если еще похохмить

Это же хохма была smile



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Любитель
Дата 28.4.2007, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(JackYF @  23.4.2007,  19:30 Найти цитируемый пост)
Но хотел бы я посмотреть на компилятор

Вот я и предложил посмотреть на него smile Впрочем что смотреть - обычный экзешник. Ничего красивого. Консоль, она и в Африке консоль (хотя не уверен...)


--------------------
PM MAIL ICQ Skype   Вверх
JackYF
Дата 28.4.2007, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Любитель @  23.4.2007,  23:10 Найти цитируемый пост)
Но хотел бы я посмотреть на компилятор, у которого sizeof(bool)>1
MS VC++/CLI


Кстати... а зачем ему sizeof(bool) > 1? памяти, что ли, под true/false не хватает? smile. Или внутренние заморочки?



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Любитель
Дата 28.4.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Оптимизация скорости в ВМ, если не ошибаюсь. Впрочем, вопрос к дотнетчикам. К тому же там уже была такая тема (по шарпу, но какая разница?).


--------------------
PM MAIL ICQ Skype   Вверх
Sartorius
Дата 28.4.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



 на БОРе как то такой код видел из реального проекта между прочим  smile 
Код

if(bFlag.ToString().length() > 4)
{
...
}

  Так что одного байта не всегда хватает... smile 
PM MAIL ICQ   Вверх
Любитель
Дата 28.4.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Sartorius, не понял. Если bFlag типа bool, то ToString (если я жутко не туплю) возвращает его строковое представление - "true/false". Код правда тупой до ужаса (или в этом суть smile )


--------------------
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0926 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.