首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 入門核心筆記:運算子優先級、短路求值與控制流程完整指南

     編輯:關於C語言

繼資料型別與變數宣告後,本文系統整理 C# 運算子與控制流程陳述式兩大核心語法。內容包含運算子分類表、優先級與短路求值兩大陷阱、七種控制流程語法範例與解析,適合初學者建立紮實語法基礎,建議搭配參考書食用效果最佳。

一、運算子總覽

C# 提供豐富運算子,常見分類如下:

分類運算子範例說明
算術+ - * / % ++ --數學運算,注意整數除法捨去小數
關係== != < > <= >=回傳 bool,勿寫成 = (指派)
邏輯&& || ! ^&&、|| 支援短路求值
位元& | ^ ~ << >>位元層級操作
指派= += -= *= /= %=複合指派簡化寫法
條件?: ??三元運算子、null 聯合運算子
其他typeof sizeof new () [] . ?.型別、記憶體、物件建立、存取

二、運算子兩大必知陷阱

1. 優先級規則

  • 數學規則同樣適用:* / % 優於 + -
  • 同優先級由左向右結合
  • 最佳實務:適度加上括號 () 明確表達意圖,提升可讀性、避免錯誤

運算元評估順序:執行運算前,先由左至右計算各運算元的值。

2. 短路求值

&& (條件 AND)、|| (條件 OR)、?: (條件)、?? (null 聯合) 支援短路。一旦結果已定,右側運算式不再執行。

int a = 1, b = 1;
bool c = ++a == 2 || ++b == 2;
// a=2 (++a 執行),b=1 (|| 左側為 true,右側短路,++b 不執行)

實務啟示:利用短路特性可寫出安全程式碼,如 obj != null && obj.Method() 避免 NullReferenceException。

三、控制流程陳述式完整範例

1. if-else 多重條件

if (a == 1)
{
    b = 1;
}
else if (a == 2)
{
    b = -1;
}
else
{
    b = 0;
}
  • else if 可有多個或無;else 可省略
  • 嚴禁將 == 寫成 =

2. while 迴圈

while (a < b)
{
    a++;
}
  • 先判斷條件,成立才進入區塊
  • 若初始條件不成立,區塊一次也不執行

3. do-while 迴圈

do
{
    a++;
} while (a < b);
  • 至少執行一次區塊,再判斷條件決定是否繼續
  • 注意結尾需加分號 ;

4. for 迴圈

for (int i = 1; i <= 10; i++)
{
    // 迴圈本體
}
  • 三段式:初始化;條件判斷;迭代運算
  • 適用「已知迴圈次數」情境

5. foreach 迴圈

foreach (char ch in strOrArray)
{
    Console.WriteLine(ch);
}
  • 專為集合/陣列遍歷設計,唯讀、無索引
  • in 右側須實作 IEnumerable
  • 範例相當於將字串每字元逐行輸出

6. continue 跳過本次迴圈

foreach (char ch in str)
{
    if (ch == 'm') continue; // 略過 'm'
    Console.WriteLine(ch);
}
  • 直接進入下一次迭代,本次剩餘程式碼不執行
  • 僅能用於迴圈區塊內

7. switch 多重分支

switch (a)
{
    case 'a': b = 1; break;
    case 'b': b = 2; break;
    case 'c': b = 3; break;
    default:  b = 0; break;
}
  • 依變數值跳轉對應 case
  • 每個 case 必須以 break 結束 (C# 不支援 fall-through)
  • default 為無符合時的預設處理
  • C# 7.0+ 支援型別模式、when 條件守衛,寫法更彈性

8. break 跳出區塊

  • 在 switch 中:跳出 switch 區塊
  • 在迴圈中:立即結束整個迴圈,不再執行後續迭代

四、學習路徑建議

  1. 先熟記運算子優先級表,練習加括號習慣
  2. 撰寫短路求值測試程式,觀察側邊效應執行與否
  3. 各控制流程各寫 3-5 個小程式(如:猜數字、九九乘法表、質數判斷)
  4. 嘗試用 foreach 取代 for 遍歷集合,體會差異
  5. 下一階段學習:方法 (Method) — 封裝邏輯、參數傳遞、回傳值、多載與遞迴

小結

運算子與控制流程是程式「會動」的關鍵。牢記優先級加括號、善用短路求值寫安全碼、根據已知/未知迴圈次數選擇 for/while/foreach,即能寫出正確且易讀的流程控制。下一步邁向方法設計,將重複邏輯封裝為可復用單元。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved