【发布时间】:2014-03-18 19:47:02
【问题描述】:
C 语言没有布尔数据类型,而是使用整数。比较 == 和
【问题讨论】:
-
通过使关系运算符返回
0和1,语言允许“速记计算”:n += (n % 2 == 0); // increment n if it is even;此外,该语言已经采用任何非零值来表示真:只需在没有关系运算符的条件下直接使用它。 -
“返回任何非零值来表示真”——让它不明确会得到什么?它是否为实施者提供了更大的灵活性?他们如何利用这种灵活性?
-
C 在过去 15 年中一直使用布尔数据类型:
_Bool/bool,在stdbool.h中定义。 -
C 确实有一个布尔类型。它称为
_Bool(如果您有#include <stdbool.h>,则别名为bool)。它是由 1999 ISO C 标准添加的。但是比较运算符仍然产生int结果。 -
主要基于意见,尤其是查看 cmets 中各种帖子的讨论。
标签: c boolean-expression