在C++中,您可以这样做:
for (int i = 0 ; i < 10 ; i++) {
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
然后变量i只存在于for语句的body体内.用while语句存在某种方式吗?例如,做这样的事情会很好:
while ( (int c = fgetc(file)) != EOF ) {
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
显然这不起作用.但是存在一些语法技巧来有效地做到这一点(变量用于while条件并且只在while语句体内可见)?
你可以使用:
{
int c = fgetc(file); /* c should only be in scope for a limited time */
while (c != EOF) {
/* Do your stuff */
c = fgetc(file);
}
} /* c goes out of scope */
Run Code Online (Sandbox Code Playgroud)
但它很混乱,而且无可否认,我是一个老式的嵌入式C程序员,我个人更喜欢在类或函数开头声明的变量.
真正的答案是,如果您担心将变量的范围限制为给定的代码块,那么它是一个很好的指示器,所述代码块应该是一个单独的函数/类成员,那么您不必担心局部变量的范围.
for(int c;c = fgetc(file)) != EOF;){
}
Run Code Online (Sandbox Code Playgroud)