变量重复定义为何编译器不报错
2023-07-08
阅读(1092)
问:求教为啥变量重复定义vc报错而有的编译器不报错
- 答:这个是编译器问题,推荐用gcc吧,可以对编译选项有个比较透彻的理解和使用。
凡是人造的东西都有缺陷,编译器也是人编的。
问:java程序,在一个循环当中,每一次循环都声明一个相同名字的变量,为什么编译器不会提示重复声明变量?
- 答:您好,提问者:
char element = arrays[i];//这个变量不是旅余重复声明的,因为变量的范围是{}内
首漏棚先i = 0的时候,进{},走完出{},然后再进()判断i < xx; i++如果满足,才进入{}。
所以char element = arrays[i];又声明了一次。这个返镇则不存在重复声明。 - 答:这不叫重复申明变量,它只是取下标为i的值,然后给element重新赋值,上一个值就被覆盖了
问:关于结构变量重复定义?
- 答:那是因为c++中变量的生存周期是存在于块中的,
while(1)
{int
i;}
这句中的i生段斗举存周期握碧只存在于while循环中,出了循环i就不销历能使用了,
所以这两个i不处于同一个内存空间 - 答:如下代码1,因为重复定义了两个变量 a ,编译器报错。 void main() { int a; int a; return; } 如下代码2,用for循环也是定义了两个变量a, 编译器却不报错 void main() { for(int i=0;i<2;i++) { int a; } return; } 我的问题是: 1. 为什么用for循环重复定义的变量不会报错?备烂郑????? 2. 最终系统是怎样仿颂给代码2分配内存的历含? 在该函数的栈上 有两个相同名称的变量吗? 这样好像应该不可以吧。。。。。