C/C++多条件If语句

C/C++ Multiple Condition If Statement

本文关键字:If 语句 条件 C++      更新时间:2023-10-16

程序如下

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

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

我不确定这句话是怎么说的。。。有人能帮我吗?

首先评估比较,因为<的优先级高于=。比较的结果是false(即广播到0),则z被设为0。然后将条件求值为false,因此执行else分支,其中首先进行赋值,然后递增y(请参阅后缀++运算符的工作原理)。顺便说一句,你永远不应该写这样的代码,但作为z = (x<y),所以没有人会感到困惑。接下来是其余部分。

由于x < y为false,因此可以在if中用false替换x < y。这应该会使代码变得难以理解。

赋值表达式的值就是赋值,因此z = x < y的值就是x < y的值(即true或false)。您的代码不使用变量z,可以简单地写成:

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

图形化操作:

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)