程序main() {int x=0,y=5,z=3;while(z-->0&&++x <5)y=y-1;printf("d,%d,%d\n",x,y,z); }求答案

答案是3,2,-1请问为什么不是3,2,0
还是有个疑问,就是当z=0的时候,就不满足z>0了啊,不就应该跳出循环了吗,为什么还要执行z-1呢

z--是用z的值判断完后,再执行z=z-1,而++x是先执行x=x+1后,再判断,至于‘&&’刚是前一部分为假 ,后半部分就不用会再执行
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-09
因为最后一次(也就是当z已经等于0的时候)while(z-->0 && ++x<5)判断完后,无论是真是假,z都会自减1,至于‘&&’刚是前一部分为假 ,后半部分就不用会再执行。
第2个回答  2011-02-09
有个z--,最后会减一,至于‘&&’刚是前一部分为假 ,后半部分就不用会再执行

void main() { int x=0,y=5,z=3; while(z-->0&&++x<5)y=y-1; printf...
3:逻辑&&的结合性自左向右(导致短路问题),如果写成while(++x<5 && z-->0),那x就是4了。

程序main() {int x=0,y=5,z=3;while(z-->0&&++x <5)y=y-1;printf("d...
z--是用z的值判断完后,再执行z=z-1,而++x是先执行x=x+1后,再判断,至于‘&&’刚是前一部分为假 ,后半部分就不用会再执行

...main() { int x=0,y=5,z=3; while(z-->0&&++x<5)y=y-1; printf...
z,最后是-1,当z>0不成立时,循环终止,但是z还要再减去1。这个循环里,z--是先将z与0作比较,再进行自减运算的。

...> main() { int x=010, y=10; printf("%d,%d\\n", ++x, y--); }...
则 y=++x; 的意思是 先x=x+1; (此后x的值为3,y的值为0,)后 y=x; (此后x的值为3,y的值为3)(二)已知 x 的值为 2, y 的值为0 则 y=x++; 的意思是 先 y=x; (此后x的值为2,y的值为2)后 x=x+1; (此后x的值为3,y的值为2)...

...h> main() { int x=0; while(x++<=5) ; printf(“%d, ”,x...
第三遍 x=2 while(x++<=5)===>2 < 5 继续循环 x=3;第四遍 x=3 while(x++<=5)===>3 < 5 继续循环 x=4;第五遍 x=4 while(x++<=5)===>4 < 5 继续循环 x=5;第六遍 x=5 while(x++<=5)===>5 = 5 继续循环 x=6;第七遍 x=0 whi...

...> int main(){ int x=0,y=0; while(x<15) y++,x+=++y; printf("%d...
include <stdio.h> int main(){ int x=0,y=0;while(x<15){ y++;x+=++y;} printf("%d,%d",x,y);} \/\/++y输出y值加好以后的值 \/\/y++; x+=++y \/\/y=1 x=2 y=2 \/\/y=3 x=6 y=4 \/\/y=5 x=12 y=6 \/\/y=7 x=20(x>15 所以跳出循环) y=8 ...

while(z-->0&&++x<5)是什么意思
1.先判断z是不是大于0,之后z减 1 2,x先加1,之后再判断x是否小于5 3.若都满足则循环,否则就退出循环

...> int main(){ int x=0,y=0; while(x<15) y++,x+=++y; printf("%d...
主要看这一行 while(x<15) y++,x+=++y;++的优先级要高于+=的优先级 因此x+=++y可等价于:x=x+(++y).即将++y与x原来值的和重新赋给x.运算的过程为: x y 2 2 6 4 12 6 20 8 这样回答能理解吗?

...main() { int x=1, y=2, z=3; if(x>y) if(y<z) printf("%d", ++...
结果是1 if(y<x)不成立,不执行下面。直接执行else printf(“%d,x++),所以结果为1

...void main() { int x=0,y=0,z=0; ++x||++y||++z; printf("%d %d %d...
||运算符的短路求值,++x的值是0,条件已经为假,不再进行后续计算,输出1 0 0

相似回答