这是代码的一部分
int main()
{
int x=5,y=10;
if(x=!y)
{
cout<<"h";
}
else
{
cout<<"p";
}
getch();
}
输出为p
,请解释一下代码的工作原理以及x=!y
的含义。
答案 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
条件和其他控制语句(例如for
和while
循环)中使用赋值表达式。分配的值用于评估条件,分配本身作为副作用执行。在这种情况下,条件为!y
。