恥は/dev/nullへ by 初心者

プログラミング素人がのろのろと学んだことをつづっています♪

このelseの相手はだ~れ?

以下のインデントがおかしなコードをご覧ください。

#include <stdio.h>

int main(void)
{
    int a, b;
    a = 1;
    b = 0;

    if (a)
        if (b)
            printf("aもbも真アルよ");
else
    printf("aは真だけどbは偽アルよ");

    return 0;
}

 

printf文の中に記述した文言を読んでしまうと答えがバレバレですが、このコードにおいてelseはどちらのifに対応するのかと聞かれるとちょっと迷いますよね。

 

書籍によると、同じブロックで「どのelseとも対応していない」「最も近いif」に対応するそうです。上のコードでは if(b)に対応することになります。

 

ちなみに、コードの実行結果は以下のとおりです。

 aは真だけどbは偽アルよ