do,while是先执行do后判断呀
那x先减2,又减1,不变成0了吗,再取反,又成真了,所以会循环2次
先判断还是后判断很难理解吗,
这不就是按代码顺序来的
写前面就先判断,写后面就后判断
因为printf语句中,x-=2,使得x值变为1
而while(!(--x))中,先进行--x,使得x变为0,而!是取反,所以结果为1,成立
do{} while(); 格式,先执行,后判断,因此循环体至少会执行一次。首先x=3, 进入do循环之后,执行x-=2,此时x值为1,输出1,则while(!--x)即为while(!0)为真,因此还会继续执行do循环,执行x-=2后,x为-2,输出了-2,此时while(!--x)即为while(!(-1))为假,循环终止。因此本题目while可以执行,而且执行了2次, 输出1和-2。