运算符
- 位运算
位运算只能用于整数类型的变量,且需当它们拥有等长位模式时。
- 位运算 -- 二元运算符
按位与 &: 对应位置上的值经过和运算结果,具体参见和运算符,第 4.5.1 节,并将 T(true)替换为 1,将 F(false)替换为 0
1 & 1 -> 1
1 & 0 -> 0
0 & 1 -> 0
0 & 0 -> 0
按位或 |: 对应位置上的值经过或运算结果,具体参见或运算符,第 4.5.1 节,并将 T(true)替换为 1,将 F(false)替换为 0
1 | 1 -> 1
1 | 0 -> 1
0 | 1 -> 1
0 | 0 -> 0
按位异或 ^: 对应位置上的值根据以下规则组合:
1 ^ 1 -> 0
1 ^ 0 -> 1
0 ^ 1 -> 1
0 ^ 0 -> 0
按位非 ~
int i = 3;
printf("~i=%d",~i);// -4
- 位运算 -- 移位运算符
位左移 <<:
用法:bitP << n bitP 的位向左移动 n 位,右侧空白部分使用 0 填充;如果 n 等于 2,则结果是 2 的相应倍数,即 2 的 n 次方。例如:
1 << 10 // 等于 1 KB
1 << 20 // 等于 1 MB
1 << 30 // 等于 1 GB
位右移 >>:
用法:bitP >> n。 bitP 的位向右移动 n 位,左侧空白部分使用 0 填充;如果 n 等于 2,则结果是当前值除以 2 的 n 次方
- 逻辑运算符
==、!=、<、<=、>、>=
逻辑与 &&
bool flag = 1 && 0;// flag is false
逻辑或 ||
bool flag = 1 || 0;// flag is true
逻辑非 !
bool flag = !0;// flag is true
它们之所以被称为逻辑运算符是因为它们的运算结果总是为布尔值 bool。例如:
flag = 10 > 5; // flag is true
- 算术运算符
常见可用于整数和浮点数的二元运算符有 +、-、* 和 /.
/ 对于整数运算而言,结果依旧为整数,例如:9 / 4 -> 2.
取余 % 运算符只能作用于整数:9 % 4 -> 1。
整数除以 0 会导致程序崩溃,Error(-1): Divided by zero.
浮点数除以 0.0 会返回一个无穷尽的结果,使用 inf 表示。
- 逗号运算符
表达式,表达式,…
int a = 1,b = 2;
- 三目运算符
a > b ? a : b