优先级 操作符 描述 例子 结合性
----------------------------------------------------------------------------------------------------------------------------
() 调节优先级的括号操作符 (a+b)/4;
[] 数组下标访问操作符 array[4]=2;
-> 通过指向对象的指针访问成员的操作符 ptr->age=34;
. 通过对象本身访问成员的操作符 Obj.age=34;
1 :: 作用于操作符 Class::age=2; 从左到右
++ 后置自增操作符 for(int i=0;i<10;i++)...
-- 后置自减操作符 for(int i=0;i<10;i++)...
----------------------------------------------------------------------------------------------------------------------------
! 逻辑取反操作符 if(!done)...
~ 按位取反(按位取补) flags=~flags;
++ 前置自增操作符 for(int i=0; i<10;++i)...
-- 前置自减操作符 for(int i=10;i>0;--i)...
- 一元取负操作符 int i=-1; 从右到左
2 + 一元取正操作符 int i=+1;
* 解引用操作符 data=*ptr;
& 取地址操作符 address=&obj;
(type) 类型转换操作符 int i=(int)floatNum;
sizeof 返回对象占用的字节数操作符 int size=sizeof(floatNum);
----------------------------------------------------------------------------------------------------------------------------
->* 在指针上通过指向成员的指针 ptr->*var=24;
访问成员的操作符 从左到右
3 .* 在对象上通过指向成员的指针 obj.*var=24;
访问成员的操作符
----------------------------------------------------------------------------------------------------------------------------
* 乘法操作符 int i=2*4;
4 / 除法操作符 float f=10/3.0f; 从左到右
% 取余数操作符 int rem=4%3;
----------------------------------------------------------------------------------------------------------------------------
5 + 加法操作符 int i=2+3; 从左
- 减法操作符 int i=5-1; 到右
----------------------------------------------------------------------------------------------------------------------------
<< 按位左移操作符 int flags=33<<1; 从左到右
6 >> 按位右移操作符 int flags=33>>1;
----------------------------------------------------------------------------------------------------------------------------
< 小于比较操作符 if(i<42)...
<= 小于或等于比较操作符 if(i<=42)... 从左到右
7 > 大于比较操作符 if(i>42)...
>= 大于等于比较操作符 if(i>=42)...
----------------------------------------------------------------------------------------------------------------------------
8 == 等于比较操作符 if(i==42)... 从左到右
!= 不等于比较操作符 if(i!=42)...
----------------------------------------------------------------------------------------------------------------------------
9 & 按位与操作符 flags=flags&42; 从左到右
----------------------------------------------------------------------------------------------------------------------------
10 ^ 按位异或操作符 flags=flags^42; 从左到右
----------------------------------------------------------------------------------------------------------------------------
11 | 按位或操作符 flags=flags|42; 从左到右
----------------------------------------------------------------------------------------------------------------------------
12 && 逻辑与操作符 if(conditionA&& conditionB)... 从左到右
----------------------------------------------------------------------------------------------------------------------------
13 || 逻辑或操作符 if(condiitonA||conditionB)... 从左到右
----------------------------------------------------------------------------------------------------------------------------
14 ?: 三元条件操作符 int i=(a>b)?a:b; 从右到左
----------------------------------------------------------------------------------------------------------------------------
= 赋值操作符 int a =b;
+= 复合赋值操作符(加法) a+=3;
-= 复合赋值操作符(减法) b-=4;
*= 复合赋值操作符(乘法) a*=5;
/= 复合赋值操作符(除法) b/=5;
%= 复合赋值操作符(取余) a%=3; 从右到左
15 &= 复合赋值操作符(按位与) flags&=new_flags;
^= 复合赋值操作符(按位异或) flags^=new_flags;
|= 复合赋值操作符(按位或) flags|=new_flags;
<<= 复合赋值操作符(按位左移) flags<<=2;
>>= 复合赋值操作符(按位右移) flags>>=2;
------------------------------------------------------------------------------------------------------------------------------
16 , 逗号操作符 for(int i=0,j=0;i<10;i++,j++)... 从左到右
------------------------------------------------------------------------------------------------------------------------------
来源:https://www.cnblogs.com/CharlesNels/p/9555706.html