C - 判斷式、迴圈

在判斷式和迴圈之前,先來談談判斷式本身

    ||     // (也就是在||前後的兩個條件,任何一個條件成立都算)
    &&     // 並且 (也就是在&&前後的兩個條件,都要成立才算)
    !     // 反向 (把原本不成立的改成成立,相對的,原本成立就會被改為不成立)
    ++i // 先把變數i+1之後再進行判斷
    i++ // 先判斷結果後再把變數i+1
    --i // 先把變數i-1之後再進行判斷
    i-- // 先判斷結果後再把變數i-1
    ()     // 判斷式可以用小括號框起來,可以改變判斷的優先順序,有時也比較好懂

判斷順序為由左到右
比如 || 的左邊已經成立的話,右邊就不會再進行判斷


if 判斷式


if(/*要判斷的條件寫在這*/) {
// 上述條件成立跑這
} else if (/*另一個要判斷的條件寫在這*/) {
// 另一個條件成立跑這
} else {
// 條件不成立跑這
}

比如:

    if(i > 0) {
     // i為正數會進這
    } else if (i < 0) {
     // i為負數會進這
    } else {
     // i等於0會進這
    }

可簡化為:

    if(i > 0) {
        // i為正數會進這
    } else {
        // i為負數或等於0會進這
    }


    if(i > 0) {
        // i為正數會進這
    } // i為負數或等於0都不管


    if(i > 0)
     n = i + 1; // i為正數會進這一行,下一行程式就不歸這個if管了,因為沒有用 { } 包範圍,就只有一行的範圍


    (i > 0) ? "i為正數會進這" : "i為負數或等於0會進這"


    i ?: n                  // i有值則回傳i,否則回傳n
    point ?: "default"     // point有值則回傳point,否則回傳"default"


switch 判斷式


    switch(/*要判斷的數字變數*/) {
    case /*第一個值*/:
         // i等於第一個值進這
     break;
    case /*第二個值*/:
    case /*第三個值*/:
         // i等於第二與第三個值進這
     break;
    default:
         // 其他的值都進這
     break;
    }

比如:

    switch(i) {
    case 0:
// i等於0進這
    break;
    case 1:
    case 2:
// i等於12進這
    break;
    case '3'...'9':
// i等於0x33~0x39進這
   break;
    default:
// 其他的值都進這
     break;
    }



for 迴圈


    for(/*初始值*/; /*判斷條件*/; /*進位方式*/) {
     // 條件成立會持續進來
    }

比如:

    for(i = 0; i < 5; i++) {
     printf("%d\n", i);
    }
    ====== 執行結果 ======
    0
    1
    2
    3
    4



while 迴圈


    while(/*判斷條件*/) {
     // 判斷條件成立會持續進來
    }

比如:

    i = 0;
    while(i++ < 5) {
     printf("%d\n", i);
    }
    ====== 執行結果 ======
    1
    2
    3
    4
    5



do { ... } while 迴圈


    do {
     // 無條件先進一次,第二次之後判斷條件要成立才會再進來
    } while(/*判斷條件*/);

比如:

    i = 10;
    do {
     printf("%d\n", i);
    } while(i++ < 5);
    ====== 執行結果 ======
    10



迴圈中斷 - continue

忽略之後的程式,回到迴圈開頭執行(在 for、while、do while 可以使用的功能)。
比如:

    i = 0;
    while(i++ < 5) {
        if(i == 3) // i等於3時重新回到while開頭
            continue;
        printf("%d\n", i);
    }
    ====== 執行結果 ======
    1
    2
    4
    5



迴圈中斷 - break

離開迴圈(在 switch、for、while、do while 可以使用的功能)。
比如:

    i = 0;
    while(i++ < 5) {
        if(i == 3) // i等於3時離開
            break;
        printf("%d\n", i);
    }
    ====== 執行結果 ======
    1
    2



goto

立即跳到自定義標籤位置

    goto /*自定義標籤字串*/; // 跳到自定義標籤
    /*自定義標籤字串*/:     // 定義自定義標籤位置

比如:

    if(i == 3)
    goto tail;
    ...略...
    tail:




沒有留言:

張貼留言