我在演讲中并且在power point幻灯片上声明true将返回0而false将返回1.我声明在Visual Studio中任何非零都被认为是真的,但是有一个C ++标准将0定义为true ?
Visual Studio的结果被忽视为非标准但我怀疑它是。
bool tru = true; // returns 0
bool fal = false; // returns 1
答案 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
由标准定义,等同于1
,false
至0
:
(§4.7/ 4):“如果源类型是bool,则值false将转换为零,值true将转换为一。”