if文のスコープと使わない変数宣言

#include <stdio.h>

int main()
{
    int i = 4444;

    printf("i: %d\n", i);

    if ( 1 ) {
        int j = 8888;
        printf("i: %d\nj: %d\n", i, j);
    }
    //printf("i: %d\nj: %d\n", i, j);

    return 0;
}
#include <stdio.h>

int main()
{
    int i = 4444;

    printf("i: %d\n", i);

    if ( 1 ) {
        int j = 8888;
        printf("i: %d\nj: %d\n", i, j);
    }
    printf("i: %d\nj: %d\n", i, j);

    return 0;
}
#include <stdio.h>

int main()
{
    int i = 4444;

    printf("i: %d\n", i);

    if ( 1 ) //{
        int j = 8888;
        //printf("i: %d\nj: %d\n", i, j);
    //}
    //printf("i: %d\nj: %d\n", i, j);

    return 0;
}
  • 結論

・if文の中は {} の有無に関係なくスコープが発生する
・if文の中で {} の有無に関係なく,if文の中で使用しない変数の宣言を行うとエラーになる
(if文の中で宣言された変数は,if文の外で使用できないことは上記から分かる)