3

VS2010 (C / C++) でバグを見つけたと思いますが、あまりにも明白なようで、信じられません。
Select isn't Brokenの流れで)。

これがバグなのか、何か不足している場合はお知らせください:

int main(void)
{
    int x;  // Declare a variable x;

    for(int i=0, x = 10; i<5; ++i) // Initialize X to 10.  No way around this.
    {
        printf("i is %d\n", i);
    }

    if (x == 10) // warning C4700: uninitialized local variable 'x' used    
    {
        printf("x is ten\n");
    }
}
4

2 に答える 2

25
int i=0, x = 10;

ループxをスコープとする 2 番目の変数を宣言しました。for

外部x変数は影響を受けません。

于 2013-08-19T19:50:45.970 に答える
0

これをテストするには、別のコンパイラでコードをコンパイルしてみてください。gcc を使用 (-Wall -Wextra -Wpedanticフラグなし):

$ gcc a.c
a.c: In function ‘main’:
a.c:7: error: redeclaration of ‘x’ with no linkage
a.c:5: error: previous declaration of ‘x’ was here
a.c:7: error: ‘for’ loop initial declaration used outside C99 mode
a.c:9: warning: too few arguments for format
a.c:9: warning: too few arguments for format

述べたように、問題は、 for ループでスコープがより狭い別の変数を宣言したことです。

于 2013-08-19T20:05:34.833 に答える