以下のインデントがおかしなコードをご覧ください。
#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は偽アルよ