for(int i=0;;)中i的作用域

来源:互联网 发布:cmd中怎么运行java文件 编辑:程序博客网 时间:2024/05/17 05:15

//for 语句:

for(int i=0;i<100;i++)

{

   int a;

   ... ...

}

上面的a也是一个局部变量。处在for语句带的{}之内。

for 语句涉及局部作用域时,有一点需要特别注意:上面代码中,变量 i 的作用域是什么?

根据最新的 ANSI C++ 规定,在for的初始语句中声明的变量,其作用范围是从它定义的位置开始,一直到for所带语句的作用域结束。而原来老的标准是出了for语句仍然有效,直到for语句外层的局部作用域结束。请看对比:

假设有一for语句,它的外层是一个函数。新老标准规定的不同作用域对比如下:

对比

如果按照旧标准,下面的代码将有错,但对新标准,则是正确的,请大家考虑为什么:

 

void func()

{

   for(int i=0;i<9;i++)

   {

     cout << i << endl;

   }

 

  for(int i=9;i>0;i--) //<-- 在这一行,旧标准的编译器将报错,为什么?

  {

    cout << i << endl;

  }

}

 

Borland C++ Builder 对新旧标准都可支持,只需通过工程中的编译设置来设置采用何种标准。默认总是采用新标准。记住:如果你在代码中偶尔有需要旧标准要求的效果,你只需把代码码写成这样:

int i;

for(i=0;i<9;i++)

{

   ...

}

这时候,i的作用域就将从其定义行开始,一直越过整个for语句。

0 0
原创粉丝点击