在条件下声明变量的一些方法?

use*_*061 2 c++

在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语句体内可见)?

Ste*_*nes 6

你可以使用:

{
    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程序员,我个人更喜欢在类或函数开头声明的变量.

真正的答案是,如果您担心将变量的范围限制为给定的代码块,那么它是一个很好的指示器,所述代码块应该是一个单独的函数/类成员,那么您不必担心局部变量的范围.

  • 我不同意,尽可能晚地(在最内部的范围内)声明一个变量比旧的 C 习惯要好得多。 (4认同)
  • 看起来更干净:`{int c; while( (c=fgetc()...` (2认同)

dar*_*ari 5

for(int c;c = fgetc(file)) != EOF;){
}
Run Code Online (Sandbox Code Playgroud)

  • 不过,他询问了 while 循环。 (3认同)
  • @RickyMutschlechner 在 C++ 中,`while` 和 `for` 之间确实没有太大区别。 (2认同)