在选择和循环语句中声明变量
在c++中(不适用C89标准),允许在if和switch语句的条件表达式中,在while循环的条件表达式中,在for循环的初始化部分定义变量.在这些地方声明的变量仅仅在循环代码块中有效.例如,for循环的初始化部分中声明的变量仅仅在循环中有效.看下面的例子:
/* i is local to for loop; j is known outside loop. */
int j;
for( int i=0; i<10; i++ )
j = i * 1;
/* i=10; // *** Error *** -- i not knuwn here! */
变量i在for的初始化部分被声明,在循环外,i是不可见的.因为循环的控制变量仅仅在循环中用到,所以在for循环的初始化部分声明变量是最普遍的做法.不过记住,在C89标准中这样做是不允许的.
提示: for循环中的初始化部分声明的变量仅在for循环中可见并不是一直以来的做法,最初,这种变量是在for循环之后的语句中也可见的.不过,
标准C++对这种类型的变量的作用域做出了新的限制.
如果你所使用的编译器是遵守最新的C++标准的,那么你可以在任何条件表达式中声明变量,比如在if或者while语句中.例如:
if( int x =20 ){
x = x - y;
if(x>10) y = 0;
}
条件表达式中,x被声明并赋值为20.因为x的值等价于true,所以循环开始执行.在这个例子中,x相对于循环外的部分是不可见的.坦率的说,并非所有程序员都认为在表达式中声明变量是个好习惯,所以,在本书中将不使用这种技巧.