/

c-conditionals

#C條件語句

C條件語句的介紹:if/else和switch

任何編程語言都提供了程序員進行選擇的能力。

我們希望在某些情況下執行X,在其他情況下執行Y。

我們希望檢查數據,並根據數據的狀態進行選擇。

C為我們提供了兩種方法來實現這一目的。

第一種是if語句,它具有else輔助語句,第二種是switch語句。

if

在if語句中,您可以檢查條件是否為真,然後執行提供在花括號中的區塊。

1
2
3
4
5
int a = 1;

if (a == 1) {
/\* 做點什麼 \*/
}

您可以添加else區塊,如果原始條件為false,則執行不同的區塊。

1
2
3
4
5
6
7
int a = 1;

if (a == 2) {
/\* 做點什麼 \*/
} else {
/\* 做點其他的事情 \*/
}

注意一個常見的錯誤來源-在比較時始終使用比較運算符==,而不是賦值運算符= ,否則if條件檢查始終為true,除非參數為0,例如:

1
2
3
4
5
int a = 0;

if (a = 0) {
/\* 從不被調用 \*/
}

為什麼會這樣?因為條件檢查將尋找布爾結果(比較的結果),而0這個數字始終等於false。其他一切都是true,包括負數。

您可以通過堆疊多個if語句來擁有多個else區塊:

1
2
3
4
5
6
7
8
9
int a = 1;

if (a == 2) {
/\* 做點什麼 \*/
} else if (a == 1) {
/\* 做點其他的事情 \*/
} else {
/\* 再做點其他的事情 \*/
}

switch

如果你需要做太多的if / else / if塊來進行檢查,也許是因為你需要檢查變量的確切值,那麼switch對你來說非常有用。

您可以提供一個變量作為條件,並為每個期望的值提供一系列的case入口:

1
2
3
4
5
6
7
8
9
10
11
12
13
int a = 1;

switch (a) {
case 0:
/\* 做點什麼 \*/
break;
case 1:
/\* 做點其他的事情 \*/
break;
case 2:
/\* 做點其他的事情 \*/
break;
}

我們需要在每個case的末尾加上一個“break”關鍵字,以避免在前一個結束時執行下一個case。這種”串聯”效應在某些創造性的方式上很有用。

您可以在末尾添加一個標記為“default”的“捕獲全部”case:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int a = 1;

switch (a) {
case 0:
/\* 做點什麼 \*/
break;
case 1:
/\* 做點其他的事情 \*/
break;
case 2:
/\* 做點其他的事情 \*/
break;
default:
/\* 處理所有其他情況 \*/
break;
}