C++ 布尔值true是否返回0?

C++ 布尔值true是否返回0?,c++,C++,我在一次演讲中,在power point幻灯片上,true将返回0,false将返回1。我说在VisualStudio中,任何非零被认为是正确的,但是是否有一个C++标准定义了0为真? VisualStudio的结果被视为非标准,但我对此表示怀疑 bool tru = true; // returns 0 bool fal = false; // returns 1 如公认答案中所述,标准将true定义为比较等于1,将false定义为0: §4.7/4:如果源类型为布尔,则值false转换为零

我在一次演讲中,在power point幻灯片上,true将返回0,false将返回1。我说在VisualStudio中,任何非零被认为是正确的,但是是否有一个C++标准定义了0为真? VisualStudio的结果被视为非标准,但我对此表示怀疑

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

如公认答案中所述,标准将true定义为比较等于1,将false定义为0:

§4.7/4:如果源类型为布尔,则值false转换为零,值true转换为一


如公认答案中所述,标准将true定义为比较等于1,将false定义为0:

§4.7/4:如果源类型为布尔,则值false转换为零,值true转换为一


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

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

-§4.5.6第85页


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

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

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

-§4.5.6第85页


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

什么版本的Visual Studio?你能提供一个完整的程序来重现这种行为吗?我只是在检查讲座的内容是否有误。Visual Studio 2013中的行为为1==true和0==false您确定她说的是函数返回值,而不是进程退出状态吗?示例中没有返回,因此不清楚它们指的是什么。换句话说,诸如true或false之类的值不返回任何内容,所以这个问题毫无意义。什么版本的VisualStudio?你能提供一个完整的程序来重现这种行为吗?我只是在检查讲座的内容是否有误。Visual Studio 2013中的行为为1==true和0==false您确定她说的是函数返回值,而不是进程退出状态吗?示例中没有返回值,因此不清楚它们指的是什么。换句话说,诸如true或false之类的值不返回任何内容,因此问题没有意义。谢谢,我将尝试让课程改正,C++标准——不仅仅是C++ 14——指定了Trimeto int值1,false给出了0。谢谢,我会尝试让课堂纠正,C++标准——而不是C++ 14——指定了Trimeto int给出了一个值1,false给出了一个值0。