C语言for循环初始值为5判断条件仅写i为何终止于1而非0或负数
C语言代码循环逻辑解释
该现象完全符合C语言的语法规则,核心原因是for循环的条件判断规则:
- C语言
for循环的语法为for(初始化语句; 循环继续条件; 每轮循环结束后执行的语句),只有「循环继续条件」的求值结果为非0(逻辑真)时,才会进入循环体执行代码,如果求值结果为0(逻辑假),循环直接终止。 - 你代码里的循环继续条件直接写了变量
i,C语言中所有整型值都可以直接作为逻辑值使用:非0等价于真,只有0等价于假。
我们逐轮拆解你代码的执行过程:
- 初始化i为5,第一次判断条件
i的值为5(非0,真),进入循环体输出5,执行i--后i的值为4 - 第二次判断条件
i的值为4(非0,真),进入循环体输出4,执行i--后i的值为3 - 第三次判断条件
i的值为3(非0,真),进入循环体输出3,执行i--后i的值为2 - 第四次判断条件
i的值为2(非0,真),进入循环体输出2,执行i--后i的值为1 - 第五次判断条件
i的值为1(非0,真),进入循环体输出1,执行i--后i的值为0 - 第六次判断条件
i的值为0(假),循环直接终止,不会进入循环体,也不会再执行i--
所以最终只输出了5到1的数值,不会输出0、负数,也不会出现无限循环。
如果你需要输出0,可以把循环条件修改为i >= 0,示例如下:
int i ; for (i = 5; i >= 0; i--){ printf("%d\n",i); }
内容的提问来源于stack exchange,提问作者RIP
相关产品推荐
相关产品推荐

