C++为什么要规定对所有用到的变量要先定义后使用,这样做有什么好处

2022-07-22 科技 566阅读
规定“所有用到的变量要先定义后使用”,编译器处理起来比较方便,不会有歧义。
因为C++里面,相同名字的变量在【不同的作用域】里面,是可以重复声明的。
注:每一对"{}"就是一个作用域。

比如下面的程序是可以编译通过的:
#include
usingnamespacestd;
intmain(intargc,char*argv[])
//作用域1开始
{
inta=1;
//作用域2开始
{
cout< inta=2;
//作用域3开始
{
cout< inta=3;
//作用域4开始
{
cout< inta=4;
cout< }
}
}
return0;
}
输出结果为:
1
2
3
4

--------------------------------------------------------------------------------
如果【没有】规定“所有用到的变量要先定义后使用”,上面的程序会怎么样呢?
那么上面这个程序就乱套了。因为可以先使用,再定义,

输出语句1~4就不知道自己该用哪个变量a了(这里有4个不同的a)。
因为不需要“先定义,后使用”,输出语句1~4可以使用定义在任何地方的哪个变量a。
这样,编译器就无法确定,也就无法编译了。

--------------------------------------------------------------------------------
如果规定“所有用到的变量要先定义后使用”,上面的程序会怎么样呢?
那么上面这个程序可以正常运行:
1)在输出语句1的位置为止,只有【作用域1】定义了一个a:inta=1,因此输出1。

2)在输出语句2的位置为止,【作用域1】和【作用域2】分别定义了一个a:
inta=1;
inta=2;
根据就近原则,使用最内层作用域的a,【作用域2】里面的a,输出2;

3)在输出语句3的位置为止,【作用域1】【作用域2】和【作用域3】分别定义了一个a:
inta=1;
inta=2;
inta=3;
根据就近原则,使用最内层作用域的a,【作用域3】里面的a,输出3;

同理可以分析输出语句4。

这就是为什么规定“所有用到的变量要先定义后使用”的原因之一吧。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com