1. 介紹
C語言廣泛應用於系統程式設計與嵌入式系統開發,其中運算子是執行基本操作的重要元素。本文將詳細解說C語言的運算子,從基礎用法到進階應用、錯誤處理以及最佳化方法。透過深入理解運算子,您可以更有效率地編寫程式,減少錯誤發生,並提升程式的效能。
此外,在後半部分,我們還會探討運算子的錯誤處理與最佳化技巧,提供實用的開發知識,幫助您在實際開發環境中運用自如。透過本文,您將能夠更有信心地掌握C語言的運算子。

2. 運算子的基礎與種類
什麼是運算子?
運算子是用來操作C語言中的數據的符號。C語言提供了多種運算子,包括算術運算子、賦值運算子、比較運算子和邏輯運算子等,這些運算子是建立程式邏輯的關鍵元素。
算術運算子
算術運算子用於執行基本的數學運算。
+
(加法):a + b
→ 將兩個數值相加。-
(減法):a - b
→ 將兩個數值相減。*
(乘法):a * b
→ 將兩個數值相乘。/
(除法):a / b
→ 將兩個數值相除。%
(取餘數):a % b
→ 回傳a
除以b
的餘數。
賦值運算子
賦值運算子用於將數值賦予變數。
=
(賦值):a = 5
→ 將5賦值給變數a
。+=
(加法賦值):a += 2
→a
加上2,並將結果賦值回a
。-=
(減法賦值):a -= 1
→a
減去1,並將結果賦值回a
。

比較運算子
比較運算子用於比較兩個值,並回傳布林值(真或假)。
==
(等於):a == b
→ 若a
等於b
,則回傳真。!=
(不等於):a != b
→ 若a
不等於b
,則回傳真。>
(大於):a > b
→ 若a
大於b
,則回傳真。
4. 運算子的優先順序與結合規則
當一個運算式包含多個運算子時,運算子的優先順序決定了計算的順序。此外,結合規則(左結合、右結合)決定了相同優先順序的運算子應該如何處理。
優先順序範例
int a = 2 + 3 * 4; // 結果為14
在這個運算式中,乘法的優先級高於加法,因此運算順序為3 * 4
,然後再加上2
,最終結果為14
。如果希望先進行加法,可以使用括號來改變計算順序。
int a = (2 + 3) * 4; // 結果為20
運算子的優先順序列表
優先順序 | 運算子 |
---|---|
高 | ++ , -- (遞增、遞減) |
中 | * , / , % (乘法、除法、取餘數) |
低 | + , - (加法、減法) |
結合規則的說明
C語言的賦值運算子=
是右結合(right-to-left)方式運作的,這意味著當多個賦值運算子連續出現時,它們會從右到左執行。例如:
int a, b, c;
a = b = c = 5; // 所有變數都被賦值為5
在這個例子中,首先執行 c = 5
,然後 b = c
,最後 a = b
。理解這一點可以幫助避免錯誤的運算順序。

5. 運算子的應用:位元運算子與位移運算子
位元運算子
位元運算子用於對數值的二進位表示進行操作,在底層系統開發和嵌入式程式設計中特別有用。
int a = 5; // 0101 (二進位)
int b = 3; // 0011 (二進位)
int result = a & b; // 結果是 0001 (1)
上例中使用了位元 AND (&
) 運算子,這會對兩個數值的對應位元執行邏輯 AND 運算。
位移運算子
位移運算子可用於高效處理數值運算,例如快速進行乘法或除法。
int a = 5; // 0101 (二進位)
int result = a << 1; // 1010 (10) → 相當於 a * 2
左移 (<<
) 運算子可以將數值乘以2的次方,在高效能環境中很有用。
6. 運算子的錯誤處理與最佳化
避免除以零的錯誤
除以零在數學上是不合法的,在C語言中若發生除零錯誤,程式可能會崩潰。因此,應該在計算前檢查除數是否為零。
#include <stdio.h>
int main() {
int a = 10;
int b = 0;
if (b != 0) {
printf("計算結果: %d\n", a / b);
} else {
printf("錯誤: 不能除以零。\n");
}
return 0;
}
防止運算溢位
運算溢位(Overflow)發生在數值超過變數類型的範圍時。C語言不會自動偵測溢位,因此需要手動檢查。
#include <stdio.h>
#include <limits.h> // 包含 INT_MAX 之類的宏定義
int main() {
int a = INT_MAX;
int b = 1;
if (a > INT_MAX - b) {
printf("錯誤: 運算溢位。\n");
} else {
int result = a + b;
printf("結果: %d\n", result);
}
return 0;
}
7. 總結
本文完整介紹了C語言的運算子,從基本用法到進階應用、錯誤處理和最佳化技巧。掌握這些運算子的使用方法,能夠幫助您更有效率地開發C語言程式,避免錯誤並提升程式效能。
特別是錯誤處理,如避免除零錯誤與溢位,以及使用位移運算子來最佳化計算,都是實務開發中不可或缺的知識。
下一步,建議學習指標(Pointer)、陣列(Array)等更進階的C語言概念,進一步提升對C語言的掌握與應用能力。