不是死循环.
while(!(--x))这里先执行判断,判断结束了再执行自减操作。判断的时候,x的值为1,条件成立,继续循环。在一次判断的时候,x为-2,条件不成立,退出循环,所以输出结果应该是1和-2
x-=2之后值为1
--x后值为0
所以!(--x)值为1
所以继续循环
x-=2之后值为-2
--x后值为-3
所以!(--x)值为0
所以循环中止
这怎么是死循环呢,
1:x=3, x-=2 -> x=1 然后 --x = 0, 非一下 非零
2:x=0, x-=2 -> x=-2,然后--x= -3, 非一下 零
退出
继续循环以后,第二次不是又减2了么,就变假了。
这个问题我忘了