算術運算子
正負操作
可以利用 +
與 -
進行數值的正負操作。
#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
}