学习域的一个非常小的郁闷

renyaoming 2009-02-16 11:11:34
int a;
int main()
{
if(int a=100)
int a; //这里a难道和if后面的a不是一个局部域吗,竟然编译通过了
else
int a;

}

还有一个问题if和else后面的函数体是一个域吗,还是两个不同的局部域
...全文
100 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
renyaoming 2009-02-16
  • 打赏
  • 举报
回复
DEV C++
一点警告都没有
郁闷了,那if后面的 a和else后面的a不是重复定义吗
a_rockboy 2009-02-16
  • 打赏
  • 举报
回复
果然,VC2008下也说重定义,看来if(a=10)int a;这两个a的作用域一样。
waizqfor 2009-02-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 waizqfor 的回复:]
引用楼主 renyaoming 的帖子:
int a;
int main()
{
if(int a=100)
int a; //这里a难道和if后面的a不是一个局部域吗,竟然编译通过了
else
int a;

}

还有一个问题if和else后面的函数体是一个域吗,还是两个不同的局部域

他们是在同一个域 但是用的是条件语句 也就是编译器在编译的时候 不会对逻辑进行判断的 因为这个地方的语法是没有错误的 所以编译器能通过
[/Quote]
补充一下 一般都会给警告 作为提示
a_rockboy 2009-02-16
  • 打赏
  • 举报
回复
int a;
int main()
{
if(int a=100)
{
int a; //这里a难道和if后面的a不是一个局部域吗,竟然编译通过了
}
else
{
int a;
}
}

都不是一个域
waizqfor 2009-02-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 renyaoming 的帖子:]
int a;
int main()
{
if(int a=100)
int a; //这里a难道和if后面的a不是一个局部域吗,竟然编译通过了
else
int a;

}

还有一个问题if和else后面的函数体是一个域吗,还是两个不同的局部域
[/Quote]
他们是在同一个域 但是用的是条件语句 也就是编译器在编译的时候 不会对逻辑进行判断的 因为这个地方的语法是没有错误的 所以编译器能通过
renyaoming 2009-02-16
  • 打赏
  • 举报
回复
我用的是DEV C++
zqz981 2009-02-16
  • 打赏
  • 举报
回复
我想 if 里面是赋值操作 并且只在括号内有效 并且该句为真
不会经过else。
sunnywyg 2009-02-16
  • 打赏
  • 举报
回复
我不知道你的是啥编译器,反正我的vs2005提示说 ‘int a’:redefinition

65,211

社区成员

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

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