这个程序为什么输出结果是这样???

shuirh 2009-02-21 12:02:06
#include <iostream>
using namespace std;
int vac = 3;
int main()
{
int Vac = 10;
:: Vac++;
cout <<:: Vac << endl;
cout << Vac << endl;
return 0;
}
输出结构为4和10,why?
...全文
169 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
bfhtian 2009-02-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 shuirh 的回复:]
懂了,谢谢大家了.原来::除了可以表示类的作用域外还可以用来帮助全局变量屏蔽函数中的同名局部变量,呵呵,没看见过这种用法,今天开了眼界了.
谢谢大家了.
[/Quote]
主要是知道变量的作用范围
shuirh 2009-02-21
  • 打赏
  • 举报
回复
懂了,谢谢大家了.原来::除了可以表示类的作用域外还可以用来帮助全局变量屏蔽函数中的同名局部变量,呵呵,没看见过这种用法,今天开了眼界了.
谢谢大家了.
pengzhixi 2009-02-21
  • 打赏
  • 举报
回复
作用域运算符,如果全局变量名和局部变量名称相同的话 局部变量会屏蔽全局变量,要使用全局变量的话就得通过作用域运算符来引用::
waizqfor 2009-02-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 waizqfor 的回复:]
C/C++ code
#include <iostream>
using namespace std;
int vac = 3;
int main()
{
int Vac = 10;
:: Vac++;
cout < <:: Vac < < endl; //LZ这里加了一个::(域操作符) 所以输出的是全局的VAC=3
cout < < Vac < < endl; //这里没有加 所以输出居于的VAC=10
return 0;
}
[/Quote]
写错了一个地方
:: Vac++;//这里全局变量自增++ 屏蔽了局部变量
//LZ这里加了一个::(域操作符) 所以输出的是全局的VAC=4
waizqfor 2009-02-21
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
int vac = 3;
int main()
{
int Vac = 10;
:: Vac++;
cout < <:: Vac < < endl; //LZ这里加了一个::(域操作符) 所以输出的是全局的VAC=3
cout < < Vac < < endl; //这里没有加 所以输出居于的VAC=10
return 0;
}
太乙 2009-02-21
  • 打赏
  • 举报
回复
int Vac = 10; //屏蔽全局的
:: Vac++; //使用作用域运算符::,表明是全局的vac变量,对全局的vac++
cout < <:: Vac < < endl; //输出全局的,为4
cout < < Vac < < endl; //输出局部的,未使用作用域运算符
lei_zhuyan 2009-02-21
  • 打赏
  • 举报
回复
:: Vac++;//显示的使用全局的vac变量
如果前面不加:: 那么就被局部变量覆盖掉了。
第二个cout输出的就是局部变量
sc_valentine21 2009-02-21
  • 打赏
  • 举报
回复
::这个就是全局作用域解析运算符
tunnel115 2009-02-21
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
int Vac = 3;
int main()
{
int Vac = 10;
:: Vac++; //::代表全局作用符
cout < <:: Vac < < endl;
cout < < Vac < < endl;
return 0;
}

这个主要是全局变量和局部变量的问题,::全局作用符
artwl_cn 2009-02-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lei_zhuyan 的回复:]
:: Vac++;//显示的使用全局的vac变量
如果前面不加:: 那么就被局部变量覆盖掉了。
第二个cout输出的就是局部变量
[/Quote]
yes!
yangch_nhcmo 2009-02-21
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
int vac = 3;
int main()
{
int Vac = 10;
:: Vac++; //::表示域操作符,指向全局变量 Vac = 3 + 1 = 4
cout < <:: Vac < < endl; //调用的是全局变量
cout < < Vac < < endl; //调用的是局部变量
return 0;
}

szzfl 2009-02-21
  • 打赏
  • 举报
回复
太晚了。
szqh97 2009-02-21
  • 打赏
  • 举报
回复
如果不是看到这帖子我也忘了::有这样的作用了,谢谢提醒
ysysbaobei 2009-02-21
  • 打赏
  • 举报
回复

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧