丢脸啊,今天写一道算法题,第一次没写对。改了半天愣是没看出来错哪,后面说出了一下过程,突然发现是运算符优先级惹得祸 if (!num % 2){ …… },!的运算优先级高于%,啊啊啊,丧心病狂我找了十来分钟,把老脸都给丢尽了。为了避免这种低级错误, 所以写下这篇博客巩固一下运算符优先级。
不叨叨,直接上表。
优先级 |
运算符 |
名称 |
使用方法 |
运算顺序 |
说明 |
1 |
[] |
数组下标 |
数组名[整型表达式] |
左到右 |
|
() |
圆括号 |
(表达式)/函数名(形参表) |
|||
. |
成员选择(对象) |
对象.成员名 |
|||
-> |
成员选择(指针) |
对象指针->成员名 |
|||
2 |
- |
负号运算符 |
-算术类型表达式 |
右到左 |
单目运算符 |
(type) |
强制类型转换 |
(纯量数据类型)纯量表达式 |
|||
++ |
自增运算符 |
++纯量类型可修改左值表达式 |
单目运算符 |
||
-- |
自减运算符 |
--纯量类型可修改左值表达式 |
单目运算符 |
||
* |
取值运算符 |
*指针类型表达式 |
单目运算符 |
||
& |
取地址运算符 |
&表达式 |
单目运算符 |
||
! |
逻辑非运算符 |
!纯量类型表达式 |
单目运算符 |
||
~ |
按位取反运算符 |
~整型表达式 |
单目运算符 |
||
sizeof |
长度运算符 |
sizeof 表达式 sizeof(类型) |
|||
3 |
/ |
除 |
表达式/表达式 |
左到右 |
双目运算符 |
* |
乘 |
表达式*表达式 |
双目运算符 |
||
% |
余数(取模) |
整型表达式%整型表达式 |
双目运算符 |
||
4 |
+ |
加 |
表达式+表达式 |
左到右 |
双目运算符 |
- |
减 |
表达式-表达式 |
双目运算符 |
||
5 |
<< |
左移 |
整型表达式<<整型表达式 |
左到右 |
双目运算符 |
>> |
右移 |
整型表达式>>整型表达式 |
双目运算符 |
||
6 |
> |
大于 |
表达式>表达式 |
左到右 |
双目运算符 |
>= |
大于等于 |
表达式>=表达式 |
双目运算符 |
||
< |
小于 |
表达式<表达式 |
双目运算符 |
||
<= |
小于等于 |
表达式<=表达式 |
双目运算符 |
||
7 |
== |
等于 |
表达式==表达式 |
左到右 |
双目运算符 |
!= |
不等于 |
表达式!= 表达式 |
双目运算符 |
||
8 |
& |
按位与 |
整型表达式&整型表达式 |
左到右 |
双目运算符 |
9 |
^ |
按位异或 |
整型表达式^整型表达式 |
左到右 |
双目运算符 |
10 |
| |
按位或 |
整型表达式|整型表达式 |
左到右 |
双目运算符 |
11 |
&& |
逻辑与 |
表达式&&表达式 |
左到右 |
双目运算符 |
12 |
|| |
逻辑或 |
表达式||表达式 |
左到右 |
双目运算符 |
13 |
?: |
条件运算符 |
表达式1? 表达式2: 表达式3 |
右到左 |
三目运算符 |
14 |
= |
赋值运算符 |
可修改左值表达式=表达式 |
右到左 |
op= |
/= |
除后赋值 |
可修改左值表达式/=表达式 |
op= | ||
*= |
乘后赋值 |
可修改左值表达式*=表达式 |
op= | ||
%= |
取模后赋值 |
可修改左值表达式%=表达式 |
op= | ||
+= |
加后赋值 |
可修改左值表达式+=表达式 |
op= | ||
-= |
减后赋值 |
可修改左值表达式-=表达式 |
op= | ||
<<= |
左移后赋值 |
可修改左值表达式<<=表达式 |
op= | ||
>>= |
右移后赋值 |
可修改左值表达式>>=表达式 |
op= | ||
&= |
按位与后赋值 |
可修改左值表达式&=表达式 |
op= | ||
^= |
按位异或后赋值 |
可修改左值表达式^=表达式 |
op= | ||
|= |
按位或后赋值 |
可修改左值表达式|=表达式 |
op= |
注意到了吗?并不是所有的逻辑运算符都在算数运算符后面 !这玩意就是特例,而且,逻辑运算符也是有优先级的(离散数学里讲过)所以运算符优先级应该是
! > 算术 > 关系 > && > || > 三目 > 赋值 > op=
原文地址:https://www.cnblogs.com/daker-code/p/11615542.html
时间: 2024-10-10 01:40:21