新手求帮!!
#include <stdio.h>
void main()
{
int x=1,y=2;
{
int x=2;
{
int x=3;
printf(“x=%d,y=%d\n”,x,y);
}
printf(“x=%d,y=%d\n”,x,y);
}
printf(“x=%d,y=%d\n”,x,y);
}
这段为什么输出是 x=3 y=2
x=2 y=2
x=1 y=2
这样的,教科书没有说,老师也是支支吾吾的,来这里请教大神了,别笑我哦,我是大一新生来的
------解决方案--------------------括号内定义的变量,只在括号内有效,我们称之为局部变量。
------解决方案--------------------老师支支吾吾的?什么狗屁老师啊。
这个道理很简单,就是说C允许你在{}中定义一个和上一级同名的变量,并且当你使用这个变量的时候,访问的是最近一层定义的那个,和外面的无关,外面的定义被隐藏。
这个特性有好处有坏处,好处是,开发者可以灵活地使用局部变量代替外部的变量,达到替换的目的,特别的,如果这个变量是一个函数指针的话,那么可以实现"monkey patch",也就是用自己的函数实现替代掉系统级别的那个。
坏处就是容易引发不容易察觉的bug。