x+=y+=z; printf("%d\n",z+=x>y?x++:y++);过程是怎么的?

3个回答

  • x+=(y+=z);先计算右边 y+=z的意思是y=y+z,所以x+=x+y=x+y+z=6

    z+=x>y?x++:y++ 先判断那个大,很明显是x>y,x++是要先取值后才加一,此时z+=x,z=x+z=6+3=9

    (++x||(++y&&++z))先算最里面的括号,顺序从左往右.++y是先加一再取值,此时y=0,0与任何一个数做与运算都是0,所以++z就不运行了,z还是为-1.++x||0,0与任何一个数做或运算不一定都是0,所以++x的值要算,所以x=0