C语言中:int i=0;执行语句while(i++<4)后;i的值是5而不是4,为什么?

#include <stdio.h>
#include <stdlib.h>

int main()
{ int i=0;

while(i++<4)
{
}
printf("%d\n",i);
return 0;
}

先取i值判断,再i自增,无论条件是否成立,自增总是在判断之后做了,所以当i值为4条件不现满足时,继续做了最后一个i自增,于是i 在循环体之外时是5了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-09
这道题的关键是i++与++i的区别,i++是先以i的值作为整个表达式的值,即i++=4,然后i自加1
++i则是先以i+1作为该表达式的值,i也就是i+1的值。
具体点,该题可以这样分析:
i
i++
while(i++<4)
0
0
ture
1
1
ture
2
2
ture
3
3
ture
4
4
false
5
所以你此时输出的i=5
第2个回答  2020-02-25
i++是先运算后自加,也就是说在i为3的时候,首先判断i<4,然后i进行自加变成4.然后执行while内部,然后在进行判断,这时候i为4.i<4为假.但是还要执行自加操作就是5了.
第3个回答  2012-01-26
这道题的关键是i++与++i的区别,i++是先以i的值作为整个表达式的值,即i++=4,然后i自加1
++i则是先以i+1作为该表达式的值,i也就是i+1的值。
具体点,该题可以这样分析:
i i++ while(i++<4)
0 0 ture
1 1 ture
2 2 ture
3 3 ture
4 4 false
5 所以你此时输出的i=5
第4个回答  2012-01-26
i++是先运算后自加,也就是说在i为3的时候,首先判断i<4,然后i进行自加变成4.然后执行while内部,然后在进行判断,这时候i为4.i<4为假.但是还要执行自加操作就是5了.
相似回答