十天一刻 发表于 2016-3-19 23:04:02

求解

#include<iostream>
using namespace std;
int i=0;
int main()
{
int i=1;
cout<<"i="<<i<<'\n';         //i=1
{
int i=2;
   cout<<"i="<<i<<'\n';       //=2
   {
   i+=1;
    cout<<"i="<<i<<'\n';      //i=3
   }
   cout<<"i="<<i<<'\n';       //i=3
}


cout<<"i="<<i<<'\n';      //i=1?????   为什么不是 3

return 0;
}

machimilk 发表于 2016-3-19 23:54:42

作用域不同,内层的i不是外层i

十天一刻 发表于 2016-3-20 09:31:41

machimilk 发表于 2016-3-19 23:54
作用域不同,内层的i不是外层i

可以详细点吗


那 i+=1;
    cout<<"i="<<i<<'\n';      //i=3
   }

   cout<<"i="<<i<<'\n';       //i=3这个怎么就可以

machimilk 发表于 2016-3-20 16:51:16

都叫I 但是他们不是同一个变量,各自有各自的地址而且大括号是有层级的,不过你不用纠结这个,真正编程没人会这么写的,最简单的方法是尽量给变量起名不重复,否则回头看自己程序的时候都蒙圈
页: [1]
查看完整版本: 求解