运算符
逻辑运算符
-
*逻辑与 &&*
a b a && b 真 真 真 假 假 假 假 真 假 真 假 假 都为真,逻辑与才是真 只要有一个是假, 逻辑与就是假 相当于“而且” 应用场景: 当需要两个条件都满足时,就使用逻辑与
*特别注意:*
条件1 && 条件2 当条件1为真时,才去判断条件2 当条件1为假时,就不再判断条件2
多个条件:
条件1 && 条件2 && 条件3
-
*逻辑或 ||*
a b a || b 真 真 真 假 假 假 假 真 真 真 假 真 只要有一个是真, 结果就是真 都为假时,结果才是假 相当于“或者” 多个条件: 条件1 || 条件2 || 条件3 应用场景: 只需要满足任意一个条件时,就使用逻辑或
*特别注意:*
条件1 || 条件2 当条件1为真时,就不再判断条件2 当条件1为假时,才判断条件2
-
*逻辑非 !*
是”单目运算符”, 即:只有一个操作数
!条件
a !a 真 假 假 真 相当于“不” 应用场景: 当需要不满足某条件时,就使用逻辑非
*特别注意:*
逻辑非,只对一个条件进行运算! 是一种“单目运算符”
位运算
*什么是位?*
内存的基本单元是字节, 一个字节有8位.
*位与 &*
0 & 0 0
0 & 1 0
1 & 0 0
1 & 1 1
对应位, 都是1, 结果才是1
// 00001000
// 00000011
&
// 00000000
cout << " 8 & 3 = " << (8 & 3) << endl;
*位或 |*
0 | 0 0
0 | 1 1
1 | 0 1
1 | 1 1
对应位, 都是0, 结果才是0
只要有一位是1, 结果就是1
0 | x x
// 00001000
// 00000011
||
// 00001011
cout << " 8 | 3 = " << (8 | 3) << endl;
*位非 ~*
~1 0
~0 1
取反
// 00001000
~
// 11110111
unsigned char x = ~8;
cout << (int)x << endl; //247
异或 ^
0 ^ 0 0
1 ^ 1 0
0 ^ 1 1
1 ^ 0 1
对应位不同, 结果才是1
// 00001000
// 00000011
^
// 00001011
cout << (8^3) << endl; //11
算数运算符
*算术运算*
+ | 加 | x = 5 + 3; | |
---|---|---|---|
- | 减 | x = 5 - 3; | |
* | 乘 | x = 5 * 3; | |
/ | 除 | x = 10 / 3; | 1. 两个整数相除,结果取整数部分2. 除数不能为0(也不要为0.0) |
% | 取余 | x = 10 % 3;//结果为1 | 只有整数和char类型可以做%运算float和double类型不能做%运算 |
*赋值运算*
x = 10; //把x的值设置为10, 把10写到变量x中。
x = 10 + a;
左边必须是变量
“优先级”很低,只比 ","(逗号元素符)高。
*复合赋值运算*
x += 10; // x = x + 10
x -= 10; // x = x - 10
类的还有: *= , /=, %= 等。
*自增自减运算*
i++ => i = i+1
++i => i = i+1
i-- => i = i-1
--i => i = i-1
i = 100;
x = i++; // x = 100
i = 100;
x = ++i; // x= 101
后缀自增 | x = i++; | x = i;i=i+1; | 先取值再自增(自减) |
---|---|---|---|
后缀自减 | x=i–; | x =i;i=i-1; | |
前缀自增 | x = ++i; | i=i+1;x=i; | 先自增(自减)再取值 |
前缀自减 | x = --i; | i=i-1;x = i; |
注意:
\1. 只能对变量做++和--运算,不能对变量和表达式做++和--运算
5++; //ERROR
(3+x)++; //ERRO
\2. 建议尽量使用前缀自增(自减),以避免错误。
*逗号运算符*
优先级最低.
*三目运算符*
条件 ? 表达式1 :表达式2
如果条件为真,就取表达式1作为整个表达式的值
如果条件为假,就取表达式2作为整个表达式的值
优先级
一共有15个级别!
不需强制记忆,只需要掌握以下常用的优先级:
最高优先级:( )和[ ]
最低优先级:逗号表达式
倒数第二低优先级:赋值和复合赋值(=, +=, -= ...)
x = a+ b*c;
! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
(3 + 4 < 5 && 6 > 7) || (8 > 7);