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

x+=y+=z; printf("%dn",z+=x>y?x++:y++);过程是怎么的?
int x=1,y=2,z=3;
x+=y+=z;
printf("%dn",z+=x>y?x++:y++);
x=y=z=-1;
(++x||(++y&&++z));
printf("%d %d %dn",x,y,z);
rehyuejkhuii 1年前 已收到3个回答 举报

yuyin828 幼苗

共回答了17个问题采纳率:94.1% 举报

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

1年前

10

2590786 幼苗

共回答了3个问题 举报

45XXX54555 45XXX545XXX545XXX545XXX545XXX545XXX545XXX545XXX545XXX545XXX

1年前

1

mengzheyu 幼苗

共回答了38个问题 举报

运行结果:
9
0 0 -1

1年前

0
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 18 q. 1.498 s. - webmaster@yulucn.com