#include<;stdio.h>; void main( ) {int x=3; do { printf("%d ",x-=2); }while(!(--x)); }
输出 1 和 -2
首先明白:while(!(--x))可以等价于while(!B) ,B=--x即终极奥义是 :先x=x-1 ,再B=x,最后!B
第一次x=3 进do内 x-=2也就是x=x-2 =3-2=1 将它打印出
然后进while表达式:根据终极奥义 x=x-1=1-1=0 ,B=x=0 ,所以 !B=1 故while内结果为1
第二次进do内 x=x-2=0-2=-2 将它打印出
然后进while表达式:根据终极奥义 x=x-1=-2-1=-3 ,B=x=-3这是非零即=!0 ,所以while内!B= !(!0)=0
故停止
【若有帮助,望给个采纳,谢谢!】
int x = 3;
do {
printf("%d ", x -= 2);
}
while (!(--x));
/*
1)x=3
2)先执行do里面的表达式
3)x-=2,x=x-2 > x=3-2=1【输出1】
4)代码按顺序执行到while
5)--x,此时,x=1-1=0
6)!(x) > !(0) > 0=false,!(false)=true
7)由于上一步是true,所以还会执行一次do里面的代码
4)x-=2,x=0-2 > x=-2【输出-2】
*/
1跟-1吗
不知道你这个问题是否已经解决, 如果还没有解决的话: