百韵网 >>  正文

#include <stdio.h> void main() { int x=1,y=1,z=1; x-- &&(--y||--z); printf("%d,%d,%d",x,y,z); } #include <stdio.h> void main()...

来源:www.baiyundou.net   日期:较早时间
结果是0,0,0。
x=1,y=1,z=1;
x-- &&(--y||--z);
执行过程:先调出x(1),再做--y(1先自减后成为0),再做--z(先自减后也成为0),成为下面这个模式:
1&&(0||0),最后再做x--(1后自减也成为0)
最终xyz都成为0
printf("%d,%d,%d",x,y,z); 这一句输出三个0。

#include <stdio.h> void main() { int x=1,y=1,z=1; --x &&(--y||--z); printf("%d,%d,%d",x,y,z); }~

运行结果是:
0,1,1
因为--x,x先自减,变为0,再取值判断,因为是假,且后面的&&逻辑与运算已经有了结果,所以,后续的判断不再进行。y和z的值也不会改变。

--z是先加减后引用,所以z变为0,--z最后结果为0;所以0>-1等于1;
x++是先引用后加减,所以x++最后结果为1,而x变为2;所以1<2等于1;
所以就是while(1);执行下面的语句;
y计算结果为0;
所以答案为x=2,y=0,z=0.

相关要点总结:
(编辑:本站网友)
相关推荐
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 百韵网