求解决C语言for循环的问题

img

img


本人萌新 求大佬解决 谢谢 为什么答案是1,2 不是2,2

任何变量都是有作用域的,普通变量的作用域为它所在的{}内,所以在for循环中
int m =1;这个变量的作用域就在for循环的{}内,出了for循环的{}后,就被系统回收了。
而main函数中 m=1这个值的作用域是整个main函数,所以,在printf中,输出的m的值,就是最开始的m,也就是1,而不是for循环中的m。
另外,当有重名的变量时,优先使用距离最近的变量,所以在for循环中,m++和 n=m中的m都是在for循环中声明的m,所以
if(i==4) n=m这里给n赋值的时候,用的是for循环中的m

img

因为输出的时候,m取的是外面定义的m=1
循环内的int m,输出是取不到的,取的就是循环外面的了。