int x=3;do{printf("%3d",x-=2); }while(!(--x));
1 回答
已采纳
onemoo
TA贡献883条经验 获得超454个赞
while小括号中的控制表达式的求值为0(或者说逻辑为false)时会结束循环。
这里的控制表达式是 !(--x):
它最后运算的部分是 ! 表达式,! 表达式为 false 时会结束 while
! 表达式为 false,也就是 --x 表达式不为0时。--x 表达式的值就是 x-1 的值,在第一次循环 do 部分执行过后,x 的值是 1,那么 --x 的值就是 0
所以第一次循环时 !(--x) 为 true,会进行下一次循环。
而在下次循环时,do 中 x 值会成为 -2,那么这次 while 的控制表达式值就是 false 了,才会结束循环。
也就是说 do 会循环两次,打印出 x 的值分别是 1 和 -2。
- 1 回答
- 0 关注
- 1901 浏览
添加回答
举报
0/150
提交
取消