C中_Bool和bool类型的区别?

pr1*_*m3x 54 c

任何人都可以解释一下C中的_Bool和bool数据类型有什么区别?例如

 _Bool x = 1;
  bool y = true;

  printf("%d", x);
  printf("%d", y);
Run Code Online (Sandbox Code Playgroud)

Mic*_*urr 121

这些数据类型在C99中添加.由于bool未在C99之前保留,因此它们使用_Bool关键字(保留).

bool是一个别名_Bool,如果你有stdbool.h.基本上,包括stdbool.h标题表示您的代码是正常的,标识符bool是"保留的",即您的代码不会将其用于其自身目的(类似于标识符truefalse).

  • 长期意图似乎是最终将修改标准以使bool成为关键字.这是第1步,您可以使用<stdbool.h>来获取bool宏,并且您仍然可以为了您自己的恶意目的而取消定义或重新定义它.第2步将拒绝从<stdbool.h>取消定义或重新定义bool以阻止此类恶作剧.然后第3步是使bool成为一个与_Bool完全相同的关键字,并标记_Bool已弃用.在漫长的道路(比如,从现在开始的十年或两年)结束时,标准C代码将具有bool类型,并且新的程序员将不会知道它曾经缺乏一个. (21认同)
  • 我不认为C标准会被修改为使`bool`成为关键词.考虑到字符串文字的类型仍然是`char*`,你仍然可以使用非原型函数声明. (5认同)
  • 我不明白为什么这需要花费二十年,因为这是一个非常明显的改进.仍然可以使用当前的编译器版本编译不喜欢此更改的代码. (2认同)
  • @RicardoSánchez-Sáez由于遗留代码 (2认同)
  • @JL2210 我会这样说:“非​​原型函数声明是 1989 年原始 C 标准的一个过时功能。它们已从标准的后续修订版中删除,但出于向后兼容性的原因,现代编译器仍然接受它们。不要在新代码中使用它们。” (2认同)

oua*_*uah 17

没有区别.

bool是扩展到宏_Boolstdbool.h.

并且true是一个扩展到1英寸的宏stdbool.h