(C ++)为什么使用'||'逻辑运算符返回1吗?

时间:2019-10-07 16:42:36

标签: c++

我是C ++的初学者。为什么当我写出这些代码时,我却返回“ 1”?

C

它写出“ 1”,与“ true”等效。为什么它会返回true而不是false?如何确定该陈述是否正确?

4 个答案:

答案 0 :(得分:10)

  

它如何确定该陈述是否正确?

布尔运算符遵循布尔代数的规则。

!运算符( not )对应于逻辑否定。如果操作数为true,则结果为false;如果操作数为false,则结果为true。

||(包含)运算符对应于逻辑(包含)析取。仅当两个操作数都为假时,结果才为假。否则结果为true。

输出为1,因为标准输出流在插入真布尔符号时会产生字符1(除非设置了std::ios_base::boolalpha格式标志)。

答案 1 :(得分:7)

此:

cout << (false||(!false));

评估为:

cout << (false||(true));

评估为:

cout << true;

由于false || truetrue。至少按照惯例,true的C ++表示形式通常是1,而不是0的{​​{1}}。

答案 2 :(得分:5)

因为falsefalse不是true

答案 3 :(得分:2)

考虑一下您的if声明...

您的测试值是boolean,所以它是truefalse。现在看看您的if

if (false || (!false))

您在说:

  

如果满足以下条件,则测试结果为真

:      
      
  1. 测试值为false
  2.   
  3. 测试值为 false(因此为true)。
  4.   

所以无论哪种方式,if都会返回truetrue还是false