算術運算子
正負操作
可以利用 + 與 - 進行數值的正負操作。
#include <stdio.h>
int main()
{
int n = 4;
int m = -10;
printf("%d", -n); // -4
printf("%d", +m); // -10, 負正得負
return 0;
}
五則運算
除了 + 、 - 、 * 與 / 之外,另有 % (mod,取餘數)運算。
#include <stdio.h>
int main()
{
printf("%d", 5 + 2); // 7
printf("%d", 4 - 3); // 1
printf("%d", 8 * 9); // 72
printf("%d", 10 / 5); // 2
printf("%d", 13 / 5); // 2, 無條件捨去至整數位
printf("%d", 13 % 5); // 3
return 0;
}
運算規則為「先乘除餘,後加減」及「由左至右」
#include <stdio.h>
int main()
{
printf("%d", 5 + 4 * 3 / 6); // 7
}
可以利用 ( 與 ) 重新設定運算優先順序
#include <stdio.h>
int main()
{
printf("%d", (5 + 5) * 3 / 6); // 5
return 0;
}
位元運算
位元運算共有六種運算子:~ (NOT)、| (OR)、& (AND)、 ^ (XOR)、 >> (左移)、>> (右移)
NOT
NOT 運算相當於將所有位元反轉(0 => 1 、 1 => 0 ),意義上而言即為取該數的 1 補數。
int main()
{
char n = 0; // 二進位:0000 0000
char notN = ~n; // 二進位:1111 1111 => -1
char m = 7; // 二進位:0000 0111
char notM = ~m; // 二進位:1111 1000 => -8
}
OR
OR 位元運算規則如下
| 0 | 1 | |
|---|---|---|
| 0 | 0 | 1 |
| 1 | 1 | 1 |
當兩個 bit 皆為 0 時,結果為 0 ;反之結果為 1
int main()
{
char n = 8; // 二進位:0000 1000
char m = 6; // 二進位:0000 0110
char nORm = n | m; // 二進位:0000 1110 => 14
}
AND
AND 位元運算規則如下
| 0 | 1 | |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 1 |
當兩個 bit 皆為 1 時,結果為 1 ;反之結果為 0
int main()
{
char n = 7; // 二進位:0000 0111
char m = 6; // 二進位:0000 0110
char nANDm = n & m; // 二進位:0000 0110 => 6
}