Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

C言語にif~elseif~else構文なんて無かったことに今更ながら気が付いた件

More than 3 years have passed since last update.

お恥ずかしながら

普段、コードを書く上でC言語の条件分岐で出てくるelse ifはRubyでいうところのelsifと同じととらえても問題になることが無かったため、6年以上C言語(とC++)を書きながら、今更else ifの意味を理解しました。

本題

始まりは中括弧の省略

if(条件式) {
    then;
} else {
    else;
}

という文はelse節の内容が1行だったら、中括弧を省略して

if(条件式) {
    then;
} else else;

って書けますよね。

要は

if(hoge == piyo){
    fuga = 1;
}else{
    fuga = 2;
}

if(hoge == piyo){
    fuga = 1;
}else fuga = 2;

って書けるってことです。

ということは…

if(条件式) {
    then;
} else {
    if(条件式) {
        then;
    } else {
        else;
    }
}

if(条件式) {
    then;
} else if(条件式) {
        then;
    } else {
        else;
    }

と書けることになります。

インデントを調整すれば

if(条件式) {
    then;
} else if(条件式) {
    then;
} else {
    else;
}

というおなじみの形になりますね。

雑なまとめ

C言語ってifとelseしかなかったんだ、へ~。わざとインデントをつけないことで逆に見やすくなってて面白いなー。

SoundRabbit
RustでWebフロントエンドフレームワークを作っている人です。
https://soundrabbit.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away