我正在用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(= true),但我感到困惑,事实并非如此。你能解释一下我在哪里犯错吗?
编辑:感谢您的回答,很有趣的是,我实际上犯了这么小的错误。
答案 0 :(得分:1)
您误解的部分:
!(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
答案 1 :(得分:0)
此=
是一个赋值运算符。它分配值。
==
是比较运算符。它用于比较两个值。
int value = 5, value2 = 12;
if(value == value2)
{
// do something if value and value2 are EQUAL (which they are not)
}
有关C ++中运算符的更多信息,请参见this link。