变量生存周期问题

[复制链接]
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部