打印

变量生存周期问题

[复制链接]
838|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gxgclg|  楼主 | 2012-7-24 21:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iostream>
using
namespace std;
int i=0;
int main()
{
   
int i=1;
    cout
<<i;//(1)
    {
        
int i=2;
        cout
<<i;//(2)
        {
            i
+=1;
            cout
<<i;//(3)
        }
        cout
<<i;//(4)
    }
    cout
<<i;//(5)

return
0;
}
//如果第四个i为3,那么第五个i也应该为3啊?
//如果第五个i为1,那么第四个i就应该为2啊?
//第四个i在括号外(相对于最内层的括号而言),答案说是还是跟着括号里的值为3
//而第五个i也在括号外(相对于第二个括号而言),答案却说不跟着括号里的值而是跟着括号外面的值为1了。
//同样都是括号外,怎么差距就这么大呢?

相关帖子

沙发
无冕之王| | 2012-7-24 21:51 | 只看该作者
{
  int i=2; //这个i的作用域就在括号里面
  cout<<i;//(2)
  {
  i+=1;
  cout<<i;//(3)
  }
  cout<<i;//(4)
  }

使用特权

评论回复
板凳
sinadz| | 2012-7-24 21:57 | 只看该作者
//同样都是括号外,怎么差距就这么大呢?
关键在于你那个i是定义在哪里,第2、3、4个i都是定义在第二个花括号内的那个i,所以第2、3、4个i的值分别是2、3、3

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

1653

帖子

1

粉丝