表达式与运算符
目录
判断表达式:
c
(3==3) //正确则值为1,否则为0
(a<b<c<=a) //a=1,b=2,c=3 //输出1
//a<b=1,1<c=1,1<a=1所以输出1
条件表达式:
c
x>y?1:1.5
//条件表达式的值的类型为二者中较高的类型
//输出1.0(双精度)或1.5
运算
c
a=b=c;//允许连等
a=(b=4)+(c=6) // a=10
(a=3*5)=4*3//a=12
-5/3 //可能得到-1和-2(一般取靠近0的那个数)
复合赋值运算符,后 5 种与位运算有关
c
+=,-=,*=,/=,%=,<<=,>>=,&=,∧=,|=
左右结合
左结合运算符:
- 同级别下从左向右进行运算:
- 左边的变量调用运算符
c
a*b/c=(a*b)/c
右结合运算符:
- 同级别下从右向左进行运算
- 右边的变量调用运算符
c
m=m*i++;//i先运算再自加
m=m*++i;//i先自加再运算
逗号
- cout 时用逗号要加括号
- 表达式的值一最后一个表达式为准
c
a=3*5,a*4//a=15,表达式的值为60
(a=3*5,a*4),a+5//a的值为15,表达式的值为20
- 注意
c
if(a=0){
// 不会执行这段,因为最终传到判断框的是a的值
}
if(a=<一个非0的什么东西>){
// 会执行这段函数
}
//就,原理参考逗号的作用
&
和 |
&
和|
用于位运算
c
a=3&5;//a=1
// 3=0011
// 5=0101
// 1=0001
a=3|5;//a=7
// 3=0011
// 5=0101
// 7=0111
<< 和 >>
<<
和>>
用于移位运算
c
a=3<<2;//a=12
// 3=0011
// 3<<2=1100=12
优先级
优先级 | 运算符 | 结合性 | 含义 | C/C++ |
---|---|---|---|---|
1 | :: | 作用域解析运算符 | C++ | |
2 | (表达式) | 分组 | ||
2 | () | L-R | 函数调用 | |
2 | () | 值构造,即 type(expr) | C++ | |
2 | [] | 数组下标 | ||
2 | -> | 间接成员运算符 | ||
2 | . | 直接成员运算符 | ||
2 | const_cast | 专用的类型转换 | C++ | |
2 | dynamic_cast | 专用的类型转换 | C++ | |
2 | reinterpret_cast | 专用的类型转换 | C++ | |
2 | static_cast | 专用的类型转换 | C++ | |
2 | typeid | 类型标识 | C++ | |
2 | ++ | 加 1 运算符,后缀 | ||
2 | -- | 减 1 运算符,后缀 | ||
3 | ! | R-L | 逻辑非 | |
3 | ~ | 位非 | ||
3 | + | 一元加号(正号) | ||
3 | - | 一元减号(负号) | ||
3 | ++ | 加 1 运算符,前缀 | ||
3 | -- | 减 1 运算符,前缀 | ||
3 | & | 地址 | ||
3 | * | 解除引用(间接值) | ||
3 | () | 类型转换,即(ype)expr | ||
3 | sizeeof | 长度,以字节为单位 | ||
3 | new | 动态分配内存 | C++ | |
3 | new [] | 动态分配数组 | C++ | |
3 | delete | 动态释放内存 | C++ | |
3 | delete[] | 动态释放数组 | C++ | |
4 | .* | L-R | 成员解除引用 | C++ |
4 | ->* | 间接成员解除引用 | C++ | |
5 | * | L-R | 乘 | |
5 | / | 除 | ||
5 | ^ | 模(余数) | ||
6 | + | 加 | ||
6 | - | 减 | ||
7 | << | L-R | 左移 | |
7 | >> | 右移 | ||
8 | < | L-R | ||
8 | <= | |||
8 | >= | |||
8 | > | |||
9 | == | L-R | ||
9 | != | |||
10 | & | L-R | 按位 AND | |
11 | ^ | L-R | 按位 XOF(异或) | |
12 | | | L-R | 按位 OR | |
13 | && | L-R | 逻辑 AND | |
14 | || | L-R | 逻辑 OR | |
15 | :? | R-L | 条件 | |
16 | = | R-L | 简单赋值 | |
16 | *= | 乘并赋值 | ||
16 | /= | 除并赋值 | ||
16 | %= | 求模并赋值 | ||
16 | += | 加并赋值 | ||
16 | -= | 减并赋值 | ||
16 | &= | 按位 AND 并赋值 | ||
16 | ^= | 按位 XOR 并赋值 | ||
16 | |= | 按位 OR 并赋值 | ||
16 | <<= | 左移并赋值 | ||
16 | >>= | 右移并赋值 | ||
17 | throw | L-R | 引发异常 | C++ |
18 | , | L-R | 将两个表达式合并成一个 |