C语言例题

来源:百度知道 编辑:UC知道 时间:2024/05/12 15:28:34
void fun() int n=2; main() { int n=10; fun() printf("n=%d\n",n);} void fun() { printf("n=%d\n",n);} 为什么结果为n=2,n=10 说的详细点好吗 谢谢了
void fun() int n=2; main() { int n=10; fun()

这个问题是涉及作用域的问题

你看main函数里的printf("n=%d\n",n),在这里是main函数的作用域。这里的用到的n会在main函数里面找,int n=10,所以main函数里的printf输出的是n=10

再看前面有句fun() ,这个是调用子函数,由于是void fun() ,所以没有传值进去。
所以main函数的n=10自然没有进去,fun函数中也有个printf,但是现在作用域已经转到了FUN函数中了,main函数的n在fun函数里面是没有用的(因为没有传值进去),还好前面有句void fun() int n=2,所以在fun函数中的 printf是输出n=2的

最后fun函数在前,main函数的printf在后,所以先输出n=2,然后输出n=10

---------
在不明白可以下断点查看,或者发消息我。