goto:最強大,通常僅用於特殊場景(如多重資源分配錯誤處理)。if else?: 三元運算子switch caseforwhiledo while自 Dijkstra 論文《Go To Statement Considered Harmful》後,goto 很少見。但從計算機角度看,缺少 goto(jmp 指令)無法工作。goto 最符合流程圖設計,能心之所動、劍之所至。
t = 條件1; if (t) goto true; 程式碼塊2; goto finish; true: 程式碼塊1; finish:
t = 條件1; if (t) goto true; 變數 = 表達式2; goto finish; true: 變數 = 表達式1; finish:
建議:?: 內表達式宜簡單,複雜時改用 if 便於除錯。
跳轉表 = {標籤1, 標籤2, ..., 標籤N};
goto 跳轉表[元素index];
標籤1: 程式碼塊1; goto Finish;
標籤2: 程式碼塊2; goto Finish;
...
標籤N: 程式碼塊N; goto Finish;
default: 預設處理;
Finish:
初始化語句; if (判斷語句為假) goto Finish; loop: 迴圈程式碼塊; 迭代語句; if (判斷語句為真) goto loop; Finish:
loop: t = 條件; if (!t) goto Finish; 程式碼塊; 迭代塊; Finish:
loop: 程式碼塊1; 迭代塊1; if (條件為真) goto loop;
C 語言 goto 與組合語言 jmp 邏輯完全一致。
!(A && B) = (!A) || (!B)。複雜邏輯建議手寫真值表並保證單元測試全覆蓋。&&、||、!)與位元運算(&、|、~、^)須嚴格區分。