2.12.2. åŸēæœŦ構文#

ここでは、C++ ãĢおけるäģŖčĄ¨įš„ãĒåˆļåžĄæ§‹æ–‡ã¨ã—ãĻ、if 構文、for 構文、while æ§‹æ–‡ã€ãŠã‚ˆãŗ switch 構文ãĢついãĻčĒŦ明しぞす。

2.12.2.1. if 構文#

if、else if、else ã‚’į”¨ã„ãŸæĄäģļåˆ†å˛ã¯ã€æŦĄãŽã‚ˆã†ãĢ記čŋ°ã—ãžã™ã€‚æĄäģļåŧãŒä¸Šã‹ã‚‰é †ãĢčŠ•äžĄã•ã‚Œã€æœ€åˆãĢįœŸã¨ãĒãŖãŸãƒ–ãƒ­ãƒƒã‚¯ãŽãŋãŒåŽŸčĄŒã•ã‚Œãžã™ã€‚

#include <iostream>

int main() {
    int a = 2;
    if (a == 1) {
        std::cout << "a is 1." << std::endl;
    } else if (a == 2) {
        std::cout << "a is 2." << std::endl;
    } else {
        std::cout << "a is not 1 or 2." << std::endl;
    }

    return 0;
}

こぎ䞋では、変数 a ぎ値ãĢåŋœã˜ãĻ襨į¤ē内厚が切りæ›ŋわりぞす。a が 2 ãĒぎで、else if ãŽæĄäģļãŒįœŸã¨ãĒã‚Šã€ããŽãƒ–ãƒ­ãƒƒã‚¯ãŒåŽŸčĄŒã•ã‚Œãžã™ã€‚

2.12.2.2. for 構文#

for æ–‡ã¯ã€ã‚ã‚‰ã‹ã˜ã‚įš°ã‚Ščŋ”ã—å›žæ•°ã‚„į¯„å›˛ãŒæąēãžãŖãĻいる場合ãĢį”¨ã„ã‚‹ãƒĢãƒŧプ構文です。初期化、įļ™įĄäģļ、更新å‡Ļį†ã‚’ 1 čĄŒã§æŒ‡åŽšã§ããžã™ã€‚

#include <iostream>

int main() {
    for (int i = 0; i < 5; i++) {
        std::cout << "i = " << i << std::endl;
    }

    return 0;
}

こぎ䞋では、i が 0 から 4 ぞで変化しãĒãŒã‚‰ã€č¨ˆ 5 回ãƒĢãƒŧãƒ—ãŒåŽŸčĄŒã•ã‚Œãžã™ã€‚

2.12.2.3. while 構文#

while æ–‡ã¯ã€æĄäģļåŧãŒįœŸã§ã‚る間、å‡Ļį†ã‚’įš°ã‚Ščŋ”ã—ãžã™ã€‚įš°ã‚Ščŋ”し回数がäē‹å‰ãĢæąēãžãŖãĻいãĒい場合ãĢã‚ˆãåˆŠį”¨ã•ã‚Œãžã™ã€‚

#include <iostream>

int main() {
    int i = 0;
    
    while (i < 5) {
        std::cout << "i = " << i << std::endl;
        i++;
    }

    return 0;
}

こぎ䞋では、i が 5 æœĒæē€ã§ã‚る間、ãƒĢãƒŧプがįļ™įļšã•れぞす。ãƒĢãƒŧプ内で i++ ãĢより値を更新しãĻã„ã‚‹ãŸã‚ã€į„Ąé™ãƒĢãƒŧプãĢはãĒりぞせん。

while 構文とäŧŧたもぎãĢ do while 構文がありぞす。while ã¯æĄäģļを先ãĢ判厚しãĻからå‡Ļį†ã‚’čĄŒã„ãžã™ãŒã€do while はぞず 1 回å‡Ļį†ã‚’åŽŸčĄŒã—ãĻã‹ã‚‰æĄäģļåˆ¤åŽšã‚’čĄŒã„ãžã™ã€‚

#include <iostream>

int main() {
    int i = 0;
    
    do {
        std::cout << "i = " << i << std::endl;
        i++;
    } while (i < 5);

    return 0;
}

ã“ãŽå ´åˆã€æĄäģļãĢé–ĸわらず、少ãĒくとも 1 回はå‡Ļį†ãŒåŽŸčĄŒã•ã‚Œã‚‹į‚šãŒ while とぎ違いです。

2.12.2.4. switch 構文#

č¤‡æ•°ãŽæĄäģļãĢåŸēãĨいãĻåˆ†å˛å‡Ļį†ã‚’čĄŒã†å ´åˆã€if や else if をä¸Ļãšã‚‹æ–šæŗ•ãŽãģかãĢ、switch æ§‹æ–‡ã‚’į”¨ã„ã‚‹ã“ã¨ã‚‚ã§ããžã™ã€‚switch ぎ垌ろãĢčŠ•äžĄã—ãŸã„å¤‰æ•°ã‚’æŒ‡åŽšã—ã€case 文でそぎ変数が取りうる値ごとぎå‡Ļį†ã‚’č¨˜čŋ°ã—ãžã™ã€‚ãŠãŽæĄäģļãĢもåŊ“ãĻはぞらãĒい場合は、default ãŒåŽŸčĄŒã•ã‚Œãžã™ã€‚

#include <iostream>

int main() {
    int a = 2;

    switch(a) {
        case 1:
           std::cout << "a is 1." << std::endl;
              break;
        case 2:
           std::cout << "a is 2." << std::endl;
              break;
        default:
           std::cout << "a is not 1 or 2." << std::endl;
    }
    
    return 0;
}

ãĒお、通常、各 case ブロックぎæœĢå°žãĢは break æ–‡ã‚’č¨˜čŋ°ã—ぞす。これは、čОåŊ“する case ぎå‡Ļį†ãŒįĩ‚ã‚ãŖãŸåžŒãĢ、switch 文全äŊ“を抜けるためです。

もし break 文がãĒã„å ´åˆã€čŠ˛åŊ“する case äģĨ降ぎå‡Ļį†ãŒã™ãšãĻåŽŸčĄŒã•ã‚Œã‚‹ã€Œãƒ•ã‚ŠãƒŧãƒĢ゚ãƒĢãƒŧ」という挙動ãĢãĒりぞす。そぎため、a が 2 ぎ場合は、case 2 ぎå‡Ļį†ã ã‘ã§ãĒく、default ぎå‡Ļį†ã‚‚įļšã‘ãĻåŽŸčĄŒã•ã‚Œãžã™ã€‚å™‚čŠąã¯ã€æ­ĸめおころを間違えると、é–ĸäŋ‚ãĒいäēēãŽã¨ã“ã‚ãžã§åąŠããžã™ã€‚break をåŋ˜ã‚ŒãĒいようãĢ。