|
корректно ли в Си 99 использование булей true false? |
|
|
|
 |
Ответов
(1 - 6)
|
Jul 24 2015, 14:45
|

Местный
  
Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502

|
Цитата(Метценгерштейн @ Jul 24 2015, 15:40)  Или правильней передавать 1 и 0. При использовании типа bool, какой размер этой переменной получается? В памяти хранится каждая переменная в отдельной переменной? Или в случае, если тип bool, то компилятор в одну переменную сразу 8 булок в разные биты вставляет? printf("%d", sizeof(bool)); Меньше одного байта все равно не получится.
|
|
|
|
|
Jul 24 2015, 15:04
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Метценгерштейн @ Jul 24 2015, 17:40)  Или правильней передавать 1 и 0. При использовании типа bool, какой размер этой переменной получается? В памяти хранится каждая переменная в отдельной переменной? Или в случае, если тип bool, то компилятор в одну переменную сразу 8 булок в разные биты вставляет? bool это в Си int со всеми вытекающими, но начиная с С99 - как бог на душу положит компиляторописателям, но не менее байта  . По мне, так нефиг использовать ввиду того, что возникают противоречия с размером. Хватит и разнобоев с C++. Ну true и false в с99 это просто макро, такие-же, как классические TRUE FALSE от K&R
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 24 2015, 15:16
|

Местный
  
Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502

|
Цитата(zltigo @ Jul 24 2015, 16:04)  bool это в Си int со всеми вытекающими, но начиная с С99 - как бог на душу положит компиляторописателям, но не менее байта  . По мне, так нефиг использовать ввиду того, что возникают противоречия с размером. Хватит и разнобоев с C++. Ну true и false в с99 это просто макро, такие-же, как классические TRUE FALSE от K&R Типа bool в чистом Ц нет по определению. Я, кстати, тоже в платформо-зависимых вещах предпочитаю использовать вместо bool типы вроде uint32. Просто из-за выравнивания в структурах и атомарности доступа. Если надо много битовых флагов - самодельные битовые массивы на основе тех же uint32. По крайней мере, я знаю, как оно работает в отличии от std::vector<bool>
Сообщение отредактировал CrimsonPig - Jul 24 2015, 15:17
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|