在while0的时候不是假应该输出了吗,为什么最后会是1呢

img

老哥,给你逐句分析一下
int n = 2;//n=2
while(n--);//首先执行while(2);空句,之后n=n-1;n为1,之后循环,当n=0时,while退出,但是n任然会减一,所以结果为负一

n--,先取值,后减
所以当n是1的时候,执行n--,n变成0了,但是因为while取到的值是1,继续循环
再执行n--,n就变成-1了

楼上说的对!

while(n--) 执行顺序:
n=2 ,while(n) ,n--; 此时 n=1.
n=1 ,while(n) ,n--; 此时 n=0
n=0 ,while(n) ,退出循环 ,n--; 此时 n = -1 .