Разница между типами _Bool и bool в C?

Может ли кто-нибудь объяснить мне, в чем разница между типами данных _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