这个x求解后为什么等于六,求解

img

x = (y = 5, z = y + 1);这是逗号表达式,每一个子表达式都会执行,返回值是最后一个子表达式的值。首先y=5执行, 然后z=5+1=6,返回x=6,记住一点,不管中间几个逗号,返回的都是最后的子表达式的值。

执行顺序:
y=5;
z=y+1;//=6
x=z;//等于6

这种问题就是对运算符的优先级的理解

  1. 等于号的结合方向为自右向左排序
  2. 有括号的先算括号里面的内容
  3. 同优先级的,还有逗号隔开,则自左向右结合

根据上面三个步骤就得出结果:代码会先计算y=5,然后再计算z=y+1=6,再计算 (y=5,z=y+1) 结果就是6,最后就是对x进行赋值 即x = 6