这,大一c语言,搞不懂了,解释下,详细一些

img

作用域的问题,因为main里面有i,所以外面那个i被main里面的i无视了,代码块内的修改在代码块外没有影响,函数f对i的修改在f外不生效,实际上只有main里面的i+=1起到了效果,所以最后输出4

答案是4,
这个学习变量作用域的。和你另外那个管理学生的程序一样,我让你把函数的第二个参数num去掉的一样,都是和变量的作用域相关。
这个东西一下子说不清楚,你可以查查相关资料,专门花点时间学习一下。

第一个i是全局变量,等于5,当局部变量与全局变量重名时,优先局部变量。f1是返回了全局变量加1的结果,但是没有变量接受(比如应该是i=f1,但这里没有"i"),所以会被忽略。而main中还有一个大括号声明了一个i,优先最局部,所以这个i加一,但外界不受影响。main中还直接定义了一个i,这个i=3,并被加1,最后输出的肯定是个这个i
提示:同名变量优先局部,但是不包含比他还小一级的。