【发布时间】:2014-03-19 18:18:55
【问题描述】:
考虑代码
bool f() { return 42; }
if (f() == 1)
printf("hello");
C(C99+ 和 stdbool.h)和 C++ 标准是否保证会打印“hello”?有没有
bool a = x;
总是等价于
bool a = x ? 1 : 0;
【问题讨论】:
-
我确定这个问题是重复的,但是bool 类型的prvalue 可以转换为int 类型的prvalue,false 变为0,true 变为1。
-
为什么要这样比较?
-
正是苏小歌所说的:你为什么还要在意?这样的代码永远不会像显式编写
false或true那样富有表现力。 -
@XiaogeSu:我为 MCU 编码,我的布尔值通常是逻辑电平,例如
if (gpio_read(jumper) == 1) gpio_write(led, 1);。它比简单的if (gpio_read(jumper))或== true更具可读性。 -
我原以为你会打印“生命的意义”。而不是“你好”:)