C 語言學習筆記 (五):if 條件判斷

| May 8, 2021 min read

學習書籍:C 語言學習手冊 第四版。作者: 洪維恩

這是一篇記錄自己學習 C 語言的過程,算是給自己看的筆記,所以這裡面的內容,是我整理書中我認為重要的部分,然後用自己的方式重新寫一遍,如果有圖,我會理解完,再自己畫出來,內容肯定會和課本上有出入,若有錯誤,或是理解錯的地方,希望能讓我知道。


通常一個程式中,根據情況可能產生好幾個分支,要選擇進入哪個分支,要透過 if 判斷式來進行選擇,就像人前往某個地方時,要思考該如何走,才能抵達最後目的地。而 if 判斷式就是讓 C 語言能夠做到選擇的敘述結構,我們稱此結構為「選擇性敘述」。

在之前介紹中,有提到如何進行格式化輸出與輸入,以及上一篇有整理出各種運算子的功用,其中「關係運算子」就是能讓程式,依使用者的選擇,做出相對應的動作。

if 敘述

st=>start: 開始
e=>end: 結束程式
op1=>operation: 敘述內容
op2=>operation: 其他敘述
cond=>condition: 條件判斷

st->cond
cond(yes)->op1->op2->e
cond(no)->op2->e 

if (條件判斷) { 敘述內容; }


if - else 敘述
------------

st=>start: 開始 e=>end: 結束程式 op1=>operation: Yes敘述內容 op2=>operation: No敘述內容 op3=>operation: 其他敘述 cond=>condition: 條件判斷

st->cond cond(yes)->op1->op3->e cond(no)->op2->op3->e

if (條件判斷)
{
    敘述內容;
}
else
{
    敘述內容;
} 
```

巢狀 if 敘述
--------

```
st=>start: 開始
e=>end: 結束程式
op1=>operation: 內部敘述
op2=>operation: 外部敘述
op3=>operation: 其他敘述
cond1=>condition: 條件判斷1
cond2=>condition: 條件判斷2

st->cond1
cond1(yes)->cond2
cond2(yes)->op1->op3->e
cond2(no)->op2->op3
cond1(no)->e 

if (條件判斷) { if (判斷條件) { 內部敘述內容; } 外部敘述內容; }


if - else if 敘述
---------------

st=>start: 開始 e=>end: 結束程式 op1=>operation: 敘述內容1 op2=>operation: 敘述內容2 op3=>operation: 敘述內容3 op4=>operation: 其他敘述 cond1=>condition: 條件判斷1 cond2=>condition: 條件判斷2 cond3=>condition: 條件判斷3

st->cond1 cond1(yes)->op1->op4->e cond1(no)->cond2->op4->e cond2(yes)->op2->op4->e cond2(no)->cond3->op4->e cond3(yes)->op3->op4->e cond3(no)->op4->e

if (條件判斷)
{
    敘述內容1;
}
else if{
    敘述內容2;
}
else{
    敘述內容3;
} 
```

條件運算子
-----

條件運算子可以當作是簡潔版的 if - else 敘述。

```
條件判斷 ? 運算式1 : 運算式2 
```

條件運算子的運算結果還可以存放至變數中。

```
變數名稱 = 條件判斷 ? 運算式1 : 運算式2 

if (條件判斷) { 變數名稱 = 運算式1; } else { 變數名稱 = 運算式2; }


switch 選擇敘述
-----------

st=>start: 開始 e=>end: 結束程式 op1=>operation: 敘述內容1 op2=>operation: 敘述內容2 op3=>operation: 敘述內容3 op4=>operation: 預設敘述 bk1=>operation: break; bk2=>operation: break; bk3=>operation: break; cond1=>condition: 條件判斷 選擇值1 cond2=>condition: 條件判斷 選擇值2 cond3=>condition: 條件判斷 選擇值3 cond4=>condition: 條件判斷 default

st->cond1 cond1(yes)->op1->bk1->e cond1(no)->cond2->e cond2(yes)->op2->bk2->e cond2(no)->cond3->e cond3(yes)->op3->bk3->e cond3(no)->cond4->e cond4(yes)->op4->e

switch(條件判斷)
{
    case 選擇值1:
        敘述內容1;
        break;
    case 選擇值2:
        敘述內容2;
        break;
    case 選擇值3:
        敘述內容3;
        break;
    default:
        預設敘述;
} 
```

goto 敘述
-------

當程式執行到 goto 時,會無條件跳到指定標籤名稱後面。

```
標籤名稱:
    敘述內容;
goto 標籤名稱; 
```

範例:

```
#include<stdio.h>
#include<stdlib.h>
int main(){
    int i=0, sum=0;
    start:
        i++;
        sum += 1;
        printf("%d",i);
        if(i<10){
            printf("+");
            goto start;
        }
        printf("=%d\n", sum);
    system("pause");
    return 0;
} 
```
comments powered by Disqus