布尔值是否永远返回0?

时间:2015-02-28 06:01:29

标签: c++

我在演讲中并且在power point幻灯片上声明true将返回0而false将返回1.我声明在Visual Studio中任何非零都被认为是真的,但是有一个C ++标准将0定义为true ?

Visual Studio的结果被忽视为非标准但我怀疑它是。

bool tru = true; // returns 0
bool fal = false; // returns 1

2 个答案:

答案 0 :(得分:5)

绝对不是。从C ++ 14工作草案(这里选择因为我能够轻松找到它,而不是因为它特定于C ++ 14):

  

bool类型的prvalue可以转换为int类型的prvalue,false变为零,true成为一个。

- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf§4.5.6(第85页)

实际上,这种行为在大多数编程语言中都很常见。例如,在我的脑海中,Perl,Python,PHP和Javascript都将0视为false,将非零值视为true。我可以想到0是“真”的唯一情况是UNIX shell脚本,其中退出代码0用于成功,非零值用于错误。

答案 1 :(得分:2)

正如接受的答案here中所述,true由标准定义,等同于1false0

  

(§4.7/ 4):“如果源类型是bool,则值false将转换为零,值true将转换为一。”