Может ли кто-нибудь объяснить мне, в чем разница между типами данных _Bool и bool в C? Например,Разница между типами _Bool и bool в C?
_Bool x = 1;
bool y = true;
printf("%d", x);
printf("%d", y);
Может ли кто-нибудь объяснить мне, в чем разница между типами данных _Bool и bool в C? Например,Разница между типами _Bool и bool в C?
_Bool x = 1;
bool y = true;
printf("%d", x);
printf("%d", y);
Эти типы данных были добавлены в C99. Поскольку bool
не был зарезервирован до C99, они используют ключевое слово _Bool
(которое было зарезервировано).
bool
является псевдонимом для _Bool
, если вы указали stdbool.h
. В принципе, в том числе заголовок stdbool.h
является указанием на то, что ваш код в порядке, а идентификатор bool
является «зарезервированным», то есть ваш код не будет использовать его для своих целей (аналогично для идентификаторов true
и false
).
+1 для включения истории. – Lindydancer
Долгосрочное намерение заключается в том, что стандарт будет в конечном итоге пересмотрен, чтобы сделать bool ключевым словом. Это шаг 1, где вы можете использовать
Я не понимаю, почему это должно пройти два десятилетия, учитывая, что это довольно очевидное улучшение. Код, который не нравится это изменение, все еще может быть скомпилирован с использованием текущих версий компилятора. –
Нет разницы.
bool
- макрос, который расширяется до _Bool
в stdbool.h
.
И true
является макро, которая расширяется до 1 в stdbool.h
'bool' тоже должен быть typedef, C не имеет такого типа. –
Аналогично _Complex vs complex. –