线x =!y是什么意思

Pun*_* 32 0 c++

这是代码的一部分

int main()
{
    int x=5,y=10;
    if(x=!y)
    {
        cout<<"h";
    }
    else
    {
        cout<<"p";
    }
    getch();
}
Run Code Online (Sandbox Code Playgroud)

输出是p,请解释,代码如何工作和意义x=!y.

Mat*_*ips 9

看起来像是一个产生有效代码的拼写错误.扩大它有助于 -

if (x = (!y))
Run Code Online (Sandbox Code Playgroud)

因为y是10,!y== 0,并且赋值本身会产生一个值.特别是值为x = 00,因此测试评估为0,这就是你得到结果的原因.

但是在这种情况下写这是一个疯狂的事情,大概是什么,或者应该是什么

if (x != y)
Run Code Online (Sandbox Code Playgroud)

即,不等于.


das*_*ght 7

x=!y 是一项任务.

x正被赋予!y表达式的值,这是一个逻辑"非"操作.true如果操作数为零,false则返回此操作,否则返回.分配回来时,该值true变为; 变为零.1intfalse

在C和C++中,可以在if条件和其他控制语句(例如forwhile循环)中使用赋值表达式.分配的值用于评估条件,分配本身作为副作用执行.在这种情况下,条件是!y.

  • 可能会注意到赋值返回赋值,然后由`if`使用 (2认同)