向C++高手请教

来源:百度知道 编辑:UC知道 时间:2024/09/25 22:16:18
#include "stdafx.h"
#include "iostream"
using namespace std;
int id=3;
void main()
{
id=5;
{
int id;
::id=7;
cout<<"id="<<id<<endl;
}
cout<<"id="<<id<<endl;
}
运行结果为id=0
id=7
在没有加“::”之前运行结果为
id=7
id=5
怎么解释,多谢了!

int id=3;
void main()
{
id=5;
{
int id;
id=7;
cout<<"id="<<id<<endl;
}
cout<<"id="<<id<<endl;
}

分析,因为当前你没用加全局作用符“::”
进入main函数后你定义了id=5;
在下面的大括号中你又定义了id并且赋值为7
然后输出,根据局部变量覆盖的原则,这个{}里面的id将覆盖main函数中的id
所以这里输出7
你在{}中定义的id生命周期只在{},出了这个括号后将被main函数的id覆盖,所以输出的是main中的5

::这个是作用域符号;
简单的理解就是说,它使用了全局的变量id,也就是你main()外的id=3
而没用::的变量,就要看它的存在周期了,也就是你main()函数内的id了;多少就是多少了