关于C语言全局变量的一些基本问题
#include <stdio.h>int i =1;
int test(int i){
i+=1;
printf("test_%d \n",i);
return i;
}
int test1(int i){
i+=1;
printf("test1_%d \n",i);
return i;
}
int main()
{
test(i);
test1(i);
printf("main_%d \n",i);
return 0;
}
实际执行结果:
test_2
test1_2
main_1
我认为应该输出的结果:
test_2
test1_3
main_3
表示不理解,有没有大神解答一下,感谢
在这段代码中,有一个全局变量i的声明并初始化为1。然后,在test函数中,有一个参数名也叫做i,在函数内部对这个参数进行了自增操作并输出。在test1函数中,同样有一个参数名也叫做i,也对参数进行了自增操作并输出。在main函数中,先调用test函数,再调用test1函数,并输出全局变量i的值。
实际执行结果是因为在函数中使用了和全局变量同名的参数,这会导致函数内部使用的是参数的值而不是全局变量的值。当函数执行完毕后,参数的值不会影响外部的全局变量。因此,在调用test和test1函数时,全局变量i的值并没有被修改,所以在main函数中输出的仍然是初始值1。
如果你想要达到你认为应该输出的结果,可以将参数的名字改成不同于全局变量的名字,如下所示:
#include <stdio.h>
int i = 1;
int test(int num){
num += 1;
printf("test_%d \n", num);
return num;
}
int test1(int num){
num += 2;
printf("test1_%d \n", num);
return num;
}
int main()
{
i = test(i);
i = test1(i);
printf("main_%d \n", i);
return 0;
}
这样就能够得到你期望的输出结果了。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]