C語言進階剖析 06 分支語句
阿新 • • 發佈:2019-01-12
if 語句分析
- if 語句用於根據條件選擇執行語句
- else 不能獨立存在且總是與它最近的 if 相匹配
- else 語句後可以直接連線其它 if 語句
- if 語句中零值比較的注意點
○ bool 型變數應該直接出現在條件中,不要進行比較
○ 變數和 0(立即數) 值比較時, 0 應該出現在比較符號左邊
○ float 型變數不能直接進行 0 值比較,需要定義精度
void code_1() { bool b = true; if( b ) { // statement 1 } else { // statement 2 } } void code_2() { int i = 0; if( 0 == i ) { // statement 1 } else { // statement 2 } } #define EPSINON (0.00000000001) void code_3() { float f = 0.0f; if( (-EPSINON <= f) && (f <= EPSINON) ) { // statement 1 } else { // statement 2 } }
switch 語句分析
- switch 語句對應單個條件多個分支的情形
- case 語句分支必須要有break,否則會導致分支重疊
- default語句有必要加上,以處理特殊情況
void code_4()
{
case CONST_1 :
// code block
break;
case CONST_2:
// code block
break;
default:
// code block
break;
}
- case 語句中的值只能是"整形或字元型"
- case 語句的排列順序
○ 按字母或數字順序排列各條語句
○ 正常情況放在前面,異常情況放在後面
○ default 語句只能用於處理真正的預設情況
例項分析: if 和 switch
#include <stdio.h> void f1(int i) { if( i < 6 ) { printf("Failed!\n"); } else if( (6 <= i) && (i <= 8) ) { printf("Good!\n"); } else { printf("Prefect\n"); } } void f2(char i) { switch(i) { case 'c': printf("Compile\n"); break; case 'd': printf("Debug\n"); break; case 'o': printf("Object\n"); break; case 'r': printf("Run\n"); break; default: printf("Unknown\n"); break; } } int main() { f1(5); f1(9); f1(7); f2('o'); f2('d'); f2('e'); return 0; }
輸出:
Failed!
Prefect
Good!
Object
Debug
Unknown
小結
- if 語句適用於複雜邏輯進行判斷的情形中
- switch 語句適用於對離散值進行判斷的情形中
- if 語句和 switch 語句在功能上進行相互替換
- if 語句對於 “按片” 分支判斷的情形更加簡潔
- switch 語句對於 “多分支” 判斷的情形更為簡潔
補充 : switch 具有更高的執行效率,直接命中分支,避免依次的比較過程
內容參考狄泰軟體學院系列課程,如有侵權,請聯絡作者刪除!感謝~