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

 我来答
百度网友b0e28cae4
2012-03-14 · TA获得超过4016个赞
知道大有可为答主
回答量:1275
采纳率:85%
帮助的人:600万
展开全部
规定“所有用到的变量要先定义后使用”,编译器处理起来比较方便,不会有歧义。
因为 C++ 里面,相同名字的变量在【不同的作用域】里面,是可以重复声明的。
注:每一对"{}"就是一个作用域。

比如下面的程序是可以编译通过的:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
// 作用域 1 开始
{
int a = 1;
// 作用域 2 开始
{
cout << a << endl; // 输出语句 1
int a = 2;
// 作用域 3 开始
{
cout << a << endl;// 输出语句 2
int a = 3;
// 作用域 4 开始
{
cout << a << endl;// 输出语句 3
int a = 4;
cout << a << endl;// 输出语句 4
}
}
}
return 0;
}
输出结果为:
1
2
3
4

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

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

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

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

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

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

这就是为什么规定“所有用到的变量要先定义后使用”的原因之一吧。
渴侯泰河0E4
2012-03-14 · TA获得超过393个赞
知道小有建树答主
回答量:245
采纳率:0%
帮助的人:236万
展开全部
C/C++可以用来开发系统软件 系统底层哪怕错一个字节 也会引起系统崩溃 这样可方便编译器进行类型检查 防止出错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guojiaxingtudi
2012-03-14 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:122万
展开全部
内存的使用方法就是“先申请后使用”。在定义变量的过程中会为你的变量分配内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BruceXiao2305
2012-03-14
知道答主
回答量:6
采纳率:0%
帮助的人:9487
展开全部
比如函数里面的变量,必须要先定义了,编译器才能为你分配足够的栈空间存放这些变量以备后续使用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ehana06
2012-03-14 · TA获得超过334个赞
知道小有建树答主
回答量:604
采纳率:0%
帮助的人:325万
展开全部
就好像你开车(车是没油的),你是先加上油再开呢还是开完了再加油
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式