我正在进行演讲,并且关于power point幻灯片说明true将返回0而false将返回1.我声明在Visual Studio中任何非零都被认为是真的,但有没有一个C++标准将0定义为真?
Visual Studio的结果被忽视为非标准但我怀疑它是.
bool tru = true; // returns 0
bool fal = false; // returns 1
Run Code Online (Sandbox Code Playgroud)
绝对不.从C++ 14工作草案(这里选择因为我能够轻松找到它,而不是因为它特定于C++ 14):
类型的prvalue
bool
可以转换为类型的prvalueint
,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用于成功,非零值用于错误.