为何C语言函数some_function返回值为10?新手技术咨询
为什么for循环结束后返回的i是10?
先把你的代码修正(补全缺失的main函数,不影响核心问题逻辑)后整理如下:
#include <stdio.h> #include <stdlib.h> int some_function(void); int main(void) { int result; result = some_function(); printf("%d", result); return 0; } int some_function(void) { int i; for (i = 0; i < 10; i++) { // printf("%d", i); } return (i); }
这是因为C语言的for循环执行流程是固定的,咱们拆解这个循环的每一步:
- 初始化阶段:执行
i = 0,这一步只在循环启动时运行一次。 - 条件判断阶段:检查
i < 10是否成立:- 成立则进入循环体(你的代码里循环体是空的,仅注释了打印语句);
- 不成立则直接退出循环。
- 增量阶段:每次循环体执行完毕后,必然会执行
i++,之后回到条件判断阶段重复检查。
咱们模拟到循环结束的关键步骤:
当i=9时,9 < 10成立,进入空循环体后执行i++,i的值变成10。
此时回到条件判断:10 < 10不成立,循环直接终止。这时i的值就是10,函数自然返回这个数值。
直白点说:循环体执行时i的取值是0到9(共10次),但循环终止的前提是i不满足i < 10,所以最后一次增量操作会把i推到10,这才是循环停下来的触发条件——不管你有没有注释循环体里的打印,这个逻辑都不会改变。
内容的提问来源于stack exchange,提问作者AMW
相关产品推荐
相关产品推荐

