目錄
1. 算術運算符
2. 關系運算符
3. 邏輯運算符
4. 位運算符
5. 賦值運算符
6. 自增和自減運算符
7. 條件運算符(三元運算符)
8. 逗號運算符
9. sizeof 運算符
10. 取地址和解引用運算符
11.運算符的優先級
1. 算術運算符
`+` (加法):將兩個數相加。
`-` (減法):將第一個數減去第二個數。
`*` (乘法):將兩個數相乘。
`/` (除法):將第一個數除以第二個數,注意在整型除法中結果也是整型(小數部分被舍棄)。
`%` (取模):返回兩個數相除的余數,只能用于整數。
示例
int a = 10, b = 3;
int sum = a + b; // sum = 13
int difference = a - b; // difference = 7
int product = a * b; // product = 30
int quotient = a / b; // quotient = 3
int remainder = a % b; // remainder = 1
2. 關系運算符
`==` (等于):比較兩個值是否相等。
`!=` (不等于):比較兩個值是否不相等。
`>` (大于):檢查第一個值是否大于第二個值。
`<` (小于):檢查第一個值是否小于第二個值。
`>=` (大于等于):檢查第一個值是否大于或等于第二個值。
`<=` (小于等于):檢查第一個值是否小于或等于第二個值。
示例
int a = 10, b = 20;
int result;result = (a == b); // result = 0 (false)
result = (a != b); // result = 1 (true)
result = (a > b); // result = 0 (false)
result = (a < b); // result = 1 (true)
result = (a >= b); // result = 0 (false)
result = (a <= b); // result = 1 (true)
3. 邏輯運算符
`&&` (邏輯與):如果兩個操作數都為真,則條件為真。
`||` (邏輯或):如果兩個操作數有一個為真,則條件為真。
`!` (邏輯非):反轉操作數的邏輯狀態。
示例
int a = 1, b = 0;
int result;result = (a && b); // result = 0 (false)
result = (a || b); // result = 1 (true)
result = !a; // result = 0 (false)
4. 位運算符
`&` (按位與):對兩個數的每一位執行與操作。
`|` (按位或):對兩個數的每一位執行或操作。
`^` (按位異或):對兩個數的每一位執行異或操作。
`~` (按位取反):對數的每一位執行取反操作。
`<<` (左移):將一個數的所有位向左移動指定的位數。
`>>` (右移):將一個數的所有位向右移動指定的位數。
示例
int a = 5, b = 3;
int result;result = a & b; // result = 1 (0101 & 0011 = 0001)
result = a | b; // result = 7 (0101 | 0011 = 0111)
result = a ^ b; // result = 6 (0101 ^ 0011 = 0110)
result = ~a; // result = -6 (~00000101 = 11111010)
result = a << 1; // result = 10 (0101 << 1 = 1010)
result = a >> 1; // result = 2 (0101 >> 1 = 0010)
5. 賦值運算符
`=` (賦值):將右邊的值賦給左邊的變量。
`+=` (加且賦值):將右邊的值與左邊的變量相加并賦值給左邊的變量。
`-=` (減且賦值):將右邊的值與左邊的變量相減并賦值給左邊的變量。
`*=` (乘且賦值):將右邊的值與左邊的變量相乘并賦值給左邊的變量。
`/=` (除且賦值):將右邊的值與左邊的變量相除并賦值給左邊的變量。
`%=` (取模且賦值):將右邊的值與左邊的變量取模并賦值給左邊的變量。
示例
int a = 10;
a += 5; // a = 15
a -= 3; // a = 12
a *= 2; // a = 24
a /= 4; // a = 6
a %= 4; // a = 2
6. 自增和自減運算符
`++` (自增):將操作數的值增加1。例如 `a++` 或 `++a`。
`--` (自減):將操作數的值減少1。例如 `a--` 或 `--a`。
?示例
int a = 5;
a++; // a 現在是 6
++a; // a 現在是 7
a--; // a 現在是 6
--a; // a 現在是 5
7. 條件運算符(三元運算符)
`?:` (條件運算符):根據條件表達式的真假值來選擇執行兩個表達式之一。
?示例
int a = 10, b = 20;
int result;result = (a > b) ? a : b; // result = 20
8. 逗號運算符
`,` (逗號運算符):按順序執行一系列操作,并返回最后一個操作的值。
示例
int a = 1, b = 2, c;
c = (a += 1, b += 2, a + b); // c = 6 (a=2, b=4)
9. sizeof 運算符
`sizeof`:返回變量或數據類型的大小(以字節為單位)。
示例
int a = 10;
printf("Size of a: %lu\n", sizeof(a)); // 輸出變量 a 的大小
printf("Size of int: %lu\n", sizeof(int)); // 輸出數據類型 int 的大小
10. 取地址和解引用運算符
?`&` (取地址):返回變量的地址。
?`*` (解引用):訪問指針所指向的地址的值。
示例
int a = 10;
int *p;
p = &a; // p 現在是變量 a 的地址
int b = *p; // b 現在是變量 a 的值,即 10
11.運算符的優先級
在C語言中,運算符的優先級決定了表達式中各個運算符操作的順序。下面是常見運算符按優先級從高到低排列的列表:
1. 逗號運算符
2. 賦值運算符?(`=`, `+=`, `-=` 等)
3. 條件運算符?(`?:`)
4. 邏輯或運算符?(`||`)
5. 邏輯與運算符?(`&&`)
6. 按位或運算符?(`|`)
7. 按位異或運算符?(`^`)
8. 按位與運算符?(`&`)
9. 相等性和關系運算符 (`==`, `!=`, `<`, `>`, `<=`, `>=`)
10. 移位運算符?(`<<`, `>>`)
11. 加法和減法運算符 (`+`, `-`)
12. 乘法、除法和取模運算符 (`*`, `/`, `%`)
13. 一元運算符 (如 `++`, `--`, `!`, `~`, `+`, `-`)
14. 解引用和取地址運算符 (`*`, `&`)
15. sizeof運算符
優先級較高的運算符會先于優先級較低的運算符進行計算。在表達式中,可以使用圓括號 `()` 來改變運算符的計算順序,圓括號中的表達式會先于外部的運算符進行計算。
例如,考慮以下表達式:
int a = 10, b = 5, c = 3;
int result = a + b * c;
根據運算符的優先級,乘法運算符 `*` 比加法運算符 `+` 的優先級高,因此先計算乘法,然后再進行加法運算。如果想先計算加法,可以使用圓括號來改變優先級:
int result = (a + b) * c;
這樣就會先計算加法,然后再乘以 `c`。理解和正確利用運算符的優先級是編寫正確和高效C語言程序的重要基礎之一。