程序就像这样
if(z = x < y){
x +=3;
y -= 1;
}
else
x = y++;
输入值为x = 7
,y = 7
和z = 2
。
输出值为x = 7
,y = 8
和z = 0
。
我不确定这句话是如何运作的...... 任何人都可以帮助我吗?
答案 0 :(得分:2)
由于x < y
为false,因此您可以在x < y
中在心理上将false
替换为if
。这应该使代码变得微不足道。
答案 1 :(得分:2)
首先评估比较,因为<
的优先级高于=
。比较结果为false
(即转换为0),然后z
为0.然后将条件计算为false
,以便执行else
分支,首先进行赋值,然后y
递增(请参阅postfix ++
运算符的工作原理)。顺便说一句,你永远不应该写这样的代码,而是z = (x<y)
,所以没有人会感到困惑。其余的随后是。
答案 2 :(得分:2)
赋值表达式的值是赋值,因此z = x < y
的值只是x < y
的值(即true或false)。您的代码不使用变量z
,可以简单地将其写为:
if (x < y) { x += 3; y -= 1; }
else { x = y; ++y; }
答案 3 :(得分:0)
以图形方式执行:
x = 7 ; y = 7 ;
if(z= x < y){ // x = (7 < 7) => z = 0,
x +=3; // Not executed
y -= 1;
}
else
x = y++; // x = 7, y = y + 1 (Y = 8)