Может ли кто-нибудь объяснить мне, в чем разница между типами данных _Bool и bool в C?
Например
_Bool x = 1;
bool y = true;
printf("%d", x);
printf("%d", y);
Ответ 1
Эти типы данных были добавлены в C99. Поскольку bool не был зарезервирован до C99, они используют ключевое слово _Bool (которое было зарезервировано).
bool является псевдонимом для _Bool, если вы включили stdbool.h. В принципе, включая заголовок stdbool.h - это указание, что ваш код в порядке, когда идентификатор bool является "зарезервированным", то есть ваш код не будет использовать его для своих целей (аналогично для идентификаторов true и false).
Ответ 2
Нет никакой разницы.
bool - это макрос, который расширяется до _Bool в stdbool.h.
И true - это макрос, который расширяется до 1 в stdbool.h