C
1//////////////////////////////////////// 2/* これは正常に動作する 以下、if_1 */ 3if (条件) 文_1; 4else 文_2; 5//////////////////////////////////////// 6 7//////////////////////////////////////// 8/* これはエラー 以下、if_2*/ 9if (条件) {文_1;}; 10else 文_2; 11////////////////////////////////////////
if_1
は、その条件が0となっても正常にelseの文_2
が実行されますが、if_2
では、そもそもコンパイルエラー(; があると怒られる。elseがifと紐づいていない?)となります。
複合文は一つの文として扱われると習いましたが、この動作からするに、単に一つの文とは言えないと思いますが、なぜif文において複合文にセミコロンを置くとエラーが発生するのでしょうか?
もしかして、{}
ですでに;
の役割を果たしているということでしょうか。
あるいは、{}
は単にまとまりを示すだけで、セミコロン云々は関係ありませんか?
とすると、{}
で囲った複合分にはセミコロンをつける必要がないのですか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/29 01:17 編集
2020/08/29 01:19
2020/08/29 02:56
退会済みユーザー
2020/08/29 05:56