Like Share Discussion Bookmark Smile

J.J. Huang   2019-10-14   C C 語言技術 <201910>   瀏覽次數:次   DMCA.com Protection Status

C語言 - 第十章 | Operation - 判斷式

什麼是判斷式?

在程式內為了運用各式各樣的狀況,判斷式這樣東西的存在是非常重要的。為了應付這種狀況,C語言理所當然地也提供了很多條件判斷式。

1
如果生病,就請假在家休息,否則就去上班。

if條件判斷

最為基礎的則是if條件判斷

1
2
3
4
5
6
if(條件){
do1;
}
else{
do2;
}

使用上方例子撰寫

1
2
3
4
5
6
if(生病){
在家休息;
}
else{
上班;
}

有時候if裡面的else是非必要的

1
2
3
if(生病){
在家休息;
}

假設今天輸入成績,成績>=60就顯示”及格”,<60則顯示”當掉”。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

int main()
{
int score;
scanf("%d", &score);

if (score >= 60) {
printf("及格!");
}
else {
printf("當掉!");
}
return 0;
}


巢狀if

當我們需要去對某個條件做多重確認的時候,其實可以在一層if內在寫上另一層的if

1
2
3
4
5
6
7
8
9
10
11
if(生病){
if(發燒){
請假看醫生;
}
else{
在家休息;
}
}
else{
上班;
}

取址運算子

&」是一個相當特殊的運算子,它的功能是「取得一個變數的地址」。
scanf()中,除了要提供要輸入的型態,同時也要指定他要存到哪裡去,但是只指定變數是不夠的,scanf()需要明確知道要寫到「哪裡去」, 因此我們需要加上取址運算子「&」,讓scanf()直接將輸入的東西寫到指定位置上。
關於記憶體控制及相關概念會在之後再詳細講解,現在大家只要知道使用scanf()時要加上&即可。


if elseif else條件式

C語言裡面,除了基本的if else以外其實還有更多的用法。

進行條件檢查時會依序從上開始檢查,如果所有條件都不符合才會執行至else內部

另外在中間部分的else if的數量其實是可以隨著程式的要求進而去做改變 也就是說可以有零到多個的else if在原先的if else條件判斷式中間。

1
2
3
4
5
6
7
8
9
if(條件1){
do1;
}
else if(條件2){
do2;
}
else{
do3;
}

switch條件判斷

switchC語言提供的另一種條件判斷方式,本身只能比較數值或字元 但是使用適當的話,它可比if判斷式來得有效率。

1
2
3
4
5
6
7
8
9
10
switch (變數名稱或運算式) {
case 符合的數字或字元:
do1;
break;
case 符合的數字或字元:
do2;
break;
default:
do3;
}

程式再執行時會先看switch的括號,當中置放要取出數值的變數,取出數值之後,會與case設定的數字或字元比對,符合則執行該case以下的陳述句直到遇到break為止,才會離開switch,若case內都沒有相符的則會執行default內的內容,但是default本身並不一定要存在,這部分跟if else中,其實可以不要寫else是一樣的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// if else 寫法
int a;
if(a == 1){
//do1
}
else if(a == 2) {
//do2
}
else if(a == 3) {
//do3
}
else{
//do4
}

// switch 寫法
int a;
switch(a) {
case 1:
//do1
break;
case 2:
//do2
break;
case 3:
//do3
break;
default:
//do4
}

註:ifswitch之間並不是具有那麼強烈的優異性,只是遇到複合條件時,switch就幫不上忙了,你無法在switch中組合複雜的條件陳述。這時後使用if就會是比較好的方式,理所當然的,ifswitch兩者也可以搭配著靈活使用。


註:以上參考了
hackersir gitbooks