当局部变量遇上全局变量——extern及花括号用法举例
请阅读以下代码并说出它的输出结果。
1 #include <stdio.h> 2 3 int val = 9; 4 5 int foo() 6 { 7 int val = 2; 8 { 9 extern int val; 10 printf("val_foo = %d\n", val); 11 } 12 return val; 13 } 14 15 int main() 16 { 17 int val = 0; 18 printf("val_main1 = %d\n", val); 19 val = foo(); 20 printf("val_main2 = %d\n", val); 21 system("pause"); 22 return val; 23 }
在Dev-C++下编译后运行,输出结果如下:
val_main1 = 0
val_foo = 9
val_main2 = 2
请按任意键继续. . .
结论:
1. 当局部变量和全局变量名称相同,如果未作外部变量声明,在代码块中局部变量起作用。
2. 当使用extern声明为外部变量,需要用花括号使声明和引用位于同一个代码块,此时全局变量才起作用。