为什么输出为 0 (=false)?
Why is the output 0 (=false)?
我正在使用 C++ 进行操作,但我不理解下面代码的输出
int x = 21, z = 33, y = 43;
cout << (!(z < y&& x < z) || !(x = z - y)) << endl;
我写它的时候以为是真的,我理解它是“不是 z 小于 y 而 x 小于 z(这是假的),也不是 x 等于z 和 y 的差异(这是真的)”,所以我期望输出 1(= 真),但我很困惑,事实并非如此。你能解释一下我哪里出错了吗?
编辑:感谢您的回答,有趣的是我犯了如此微不足道的错误,我实际上读到了。
这个=
是一个赋值运算符。它 分配 值。
这个 ==
是一个比较运算符。它用于比较两个值。
int value = 5, value2 = 12;
if(value == value2)
{
// do something if value and value2 are EQUAL (which they are not)
}
有关 C++ 运算符的详细信息,请参阅 this link。
您误解的部分:
!(x = z - y))
x = z - y
是赋值。结果是 -10
。 -10
不是 0
,因此否定它会产生 false
.
现在,表达式的第一部分:
!(z < y&& x < z)
!(33 < 43 && 21 < 33)
!(true && true)
!(true)
false
放在一起:
(false || false) == false
我正在使用 C++ 进行操作,但我不理解下面代码的输出
int x = 21, z = 33, y = 43;
cout << (!(z < y&& x < z) || !(x = z - y)) << endl;
我写它的时候以为是真的,我理解它是“不是 z 小于 y 而 x 小于 z(这是假的),也不是 x 等于z 和 y 的差异(这是真的)”,所以我期望输出 1(= 真),但我很困惑,事实并非如此。你能解释一下我哪里出错了吗?
编辑:感谢您的回答,有趣的是我犯了如此微不足道的错误,我实际上读到了。
这个=
是一个赋值运算符。它 分配 值。
这个 ==
是一个比较运算符。它用于比较两个值。
int value = 5, value2 = 12;
if(value == value2)
{
// do something if value and value2 are EQUAL (which they are not)
}
有关 C++ 运算符的详细信息,请参阅 this link。
您误解的部分:
!(x = z - y))
x = z - y
是赋值。结果是 -10
。 -10
不是 0
,因此否定它会产生 false
.
现在,表达式的第一部分:
!(z < y&& x < z)
!(33 < 43 && 21 < 33)
!(true && true)
!(true)
false
放在一起:
(false || false) == false