c语言全局变量代码分析 //全局变量和局部变量同名程序举例。 int x=11,y=12,z=13; void fun(){ int x=21,y=22; printf("x=%d,y=%d,z=%d\n",x,y,z); } int main(){ { int y=32; printf("x=%d,y=%d,z=%d\n",x,y,z); fun(); } printf("x=%d,y=%d,z=%d\n",x,y,z); return 0; } 输入样例: 输出样例: x=11,y=32,z=13 x=21,y=22,z=13 x=11,y=12,z=13
时间: 2024-04-29 21:19:52 浏览: 165
这段代码中定义了三个全局变量x、y、z,并且它们的初始值分别为11、12、13。在函数fun中定义了两个局部变量x和y,并且它们的初始值分别为21、22。在main函数中,又定义了一个局部变量y,并且它的初始值为32。
在main函数中,首先输出了x、y、z的值,分别为11、32、13,这是因为在同一个作用域中,局部变量y的优先级高于全局变量y,所以输出的是局部变量y的值。
然后调用了函数fun,输出了x、y、z的值,分别为21、22、13。这是因为在函数fun中,x、y的优先级高于全局变量x、y,所以输出的是局部变量x、y的值,而z使用的是全局变量z的值,因为在函数中没有定义局部变量z。
最后在main函数中,输出了x、y、z的值,分别为11、12、13,这是因为在调用函数fun之后,作用域结束,局部变量y的值被销毁,所以输出的是全局变量y的值。
因此,这段代码中全局变量和局部变量同名时,局部变量的优先级高于全局变量,如果要使用全局变量,可以使用作用域解析运算符(::)来指定全局变量。
阅读全文