线x =!y是什么意思

时间:2015-03-02 03:52:45

标签: c++

这是代码的一部分

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

输出为p,请解释一下代码的工作原理以及x=!y的含义。

2 个答案:

答案 0 :(得分:9)

看起来像是一个产生有效代码的拼写错误。扩展它有帮助 -

if (x = (!y))

由于y为10,!y == 0,因此作业本身会产生一个值。特别是x = 0的值为0,因此测试评估为0,这就是你得到结果的原因。

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

if (x != y)

即,不等于。

答案 1 :(得分:7)

x=!y是一项任务。

x被分配了!y表达式的值,即logical "NOT" operation。如果操作数为零,则此操作返回true,否则返回false。当分配回true时,值1变为int; false变为零。

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