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

时间:2014-07-12 16:45:09

标签: c++

在C ++中你可以这样做:

for (int i = 0 ; i < 10 ; i++) {
    /* ... */
}

然后变量i仅存在于for语句的主体内部。 用while语句存在某种方式吗? 例如,做这样的事情会很好:

while ( (int c = fgetc(file)) != EOF ) {
   /* ... */
}

显然这不起作用。但是存在一些语法技巧来有效地做到这一点(变量用于while条件并且只在while语句体内可见)?

4 个答案:

答案 0 :(得分: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 */

它很混乱,而且无可否认是 嵌入式C程序员我个人更喜欢在类或函数开头声明的变量。

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

答案 1 :(得分:5)

for(int c;c = fgetc(file)) != EOF;){
}

答案 2 :(得分:1)

这应该有用;请参阅此示例from a previous question of mine

while ((c = getopt(argc, argv, "i:o:")) != -1) { 
 // do stuff 
}

编译并运行(事先声明提供c

答案 3 :(得分:0)

您可以使用任何可转换为bool

的类型
while (int* p = get_ptr()) { /* some code */}
// same with if
if (int* p = get_ptr()) { /* some code */}

但您无法使用自定义条件(与EOF进行比较)。