在判斷式和迴圈之前,先來談談判斷式本身
|| // 或 (也就是在||前後的兩個條件,任何一個條件成立都算)
&& // 並且 (也就是在&&前後的兩個條件,都要成立才算)
! // 反向 (把原本不成立的改成成立,相對的,原本成立就會被改為不成立)
++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等於1與2進這
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:
沒有留言:
張貼留言