C / C ++多条件If语句

时间:2014-04-26 22:40:23

标签: c++ c

程序就像这样

if(z = x < y){
    x +=3;
    y -= 1;
}
else
    x = y++;

输入值为x = 7y = 7z = 2。 输出值为x = 7y = 8z = 0

我不确定这句话是如何运作的...... 任何人都可以帮助我吗?

4 个答案:

答案 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)