为什么输出为 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