for(;;)
{
  int a=1;}
像这种循环假如循环10次,a被赋值十次,第一次赋值和后面的几次赋值为什么不产生重复变量的错误?
第一次循环后,难道a就失效了?????

解决方案 »

  1.   

    int a=1;
    这句话,会在内存中分配一个内存单元,存放1这个数字。
    每次循环,都会在内存中分配新的内存单元,虽然,它们的值都是想同的。
      

  2.   

    局部变量的生命周期只在{}范围内有效。那么换个思路来理解的话:
    for( 语句1; 语句2; 语句3)
    {
      int a=1;
    }你知道循环执行顺序是:
     语句1 -> 语句2 -> {} -> 语句3 -> 语句2 -> {} -> 语句3 -> 语句2 -> {} -> 语句3 -> 语句2所以int a=1; 在 {} 之后,进入语句3的时候,就已经消失了。
      

  3.   

    ldh911回答很直观,一看就明白了,不过也谢了楼上其他人的回答