2

私はこのコードを持っています

#include <stdio.h>
#include <stdlib.h>

int main(){
int a = 5;
{
    int b = 6;
}
printf("%d %d", a, b);
return 0;
}

ブロックの使用がこれにどのように影響するかを確認しようとしていますが、プログラムは機能しません。b は宣言されていないと言いますが、これは私が与えられた例です。誰が何が悪いのか知っていますか?または、printf がブロック内にない場合に int b が宣言され、ブロック内で初期化されるため、これが私をスローしてエラーになる可能性はありますか?

4

1 に答える 1

8

はい、印刷しようとする場所b が宣言されていません。その範囲は、その作成からブロックの最後 ( . のの右中括弧) までprintfです。

おそらく、次のような意味でした:

#include <stdio.h>
#include <stdlib.h>

int main (void) {
    int a = 5;
    int b = 42;  // <<-- Look here! Yes, you! Right here! :-)
    {
        int b = 6;
        printf ("In block: %d %d\n", a, b);
    }
    printf ("Ex block: %d %d\n", a, b);
    return 0;
}

これはb、ブロックの外に印刷しようとする時点でスコープ内にあります。b ブロック内ではありませんが、結果が出力されるとわかります。

In block: 5 6
Ex block: 5 42
于 2013-03-13T02:56:25.607 に答える