#include <stdio.h>
int main()
{
int i=0;
while(i++,i<=8);
printf("%d\n",i);
return 0;
}
为什么在对每个测试用例进行比较之后,i
的增量就完成了?
发布于 2018-05-29 13:01:19
i <= 8
最后一次成功的时候是i = 8
。
在最后一次迭代中,执行i++
,然后i <= 8
失败,因为i = 9
。
请注意,,
是一个sequence point,因此绝对保证在i <= 8
之前执行i++
。Not so for similar constructs.
发布于 2018-05-29 13:01:21
事实并非如此。您的循环条件是i <= 8
,当i
达到9时,它是第一个不真的(您每次要将i
递增1,所以它正好是9)。这就是为什么印9。
发布于 2018-05-29 13:03:53
要到达print()
语句,while
循环必须结束。终止条件,控制表达式应该计算为false (或者,换句话说,直到控制表达式比较等于0),也就是说,只有当i <= 8
;计算为false时,它才是false。对于i
作为9
的值,就会发生这种情况。
下一行,i
的值将被打印出来。所以,你可以看到9
。
https://stackoverflow.com/questions/50585051
复制相似问题