int i=10;
char b=20;
如:i=b;//這樣賦值沒有問題,因為低位元組型別轉換成高位元組型別。
如果是b=i;//這樣會有問題,b=(char)i;//因為高字型轉換為低位元組的型別後,若int i當前數值超過127時,會導致溢位,資料缺失。
所以。如果高位元組型別要強制轉換為低位元組型別時,要考慮溢位問題。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
相同優先順序中,按結合順序計算。大多數運算是從左至右計算。
只有三個優先順序是從右至左結合的,它們是
單目運算子
、條件運算子
、賦值運算子。
基本的優先順序需要記住:
指標最優,單目運算優於雙目運算。如正負號。
先乘除(模),後加減。
先算術運算,後移位運算,最後位運算。請特別注意:1 << 3 + 2 & 7等價於 (1 << (3 + 2))&7.
邏輯運算最後計算。
i++優先順序要大於++i
優先順序運算子
名稱或含義
使用形式
結合方向
說明
1
後置++
後置自增運算子
變數名++
左到右
後置--
後置自減運算子
變數名--
[ ]
陣列下標
陣列名[整型表示式]
( )
圓括號
(表示式)/函式名(形參表)
. 成員選擇(物件)
物件.成員名
->
成員選擇(指標)
物件指標->成員名
2
-
負號運算子
-表示式
右到左
單目運算子
(型別)
強制型別轉換
(資料型別)表示式
前置++
前置自增運算子
++變數名
單目運算子
前置--
前置自減運算子
--變數名
單目運算子
*
取值運算子
*指標表示式
單目運算子
&
取位址運算子
&左值表示式
單目運算子
!
邏輯非運算子
!表示式
單目運算子
~
按位取反運算子
~表示式
單目運算子
sizeof
長度運算子
sizeof 表示式/sizeof(型別)
3
/
除
表示式/表示式
左到右
雙目運算子
*
乘
表示式*表示式
雙目運算子
%
餘數(取模)
整型表示式%整型表示式
雙目運算子
4
+
加
表示式+表示式
左到右
雙目運算子
-
減
表示式-表示式
雙目運算子
5
<<
左移
表示式《表示式
左到右
雙目運算子
>>
右移
表示式》表示式
雙目運算子
6
>
大於
表示式》表示式
左到右
雙目運算子
>=
大於等於
表示式》=表示式
雙目運算子
<
小於
表示式《表示式
雙目運算子
<=
小於等於
表示式<=表示式
雙目運算子
7
==
等於
表示式==表示式
左到右
雙目運算子
!=
不等於
表示式!= 表示式
雙目運算子
8
&
按位與
整型表示式&整型表示式
左到右
雙目運算子
9
^
按位異或
整型表示式^整型表示式
左到右
雙目運算子
10
|
按位或
整型表示式|整型表示式
左到右
雙目運算子
11
&&
邏輯與
表示式&&表示式
左到右
雙目運算子
12
||
邏輯或
表示式||表示式
左到右
雙目運算子
13
?:
條件運算子
表示式1? 表示式2: 表示式3
右到左
三目運算子
14
=
賦值運算子
變數=表示式
右到左
/=
除后賦值
變數/=表示式
*=
乘後賦值
變數*=表示式
%=
取模後賦值
變數%=表示式
+=
加後賦值
變數+=表示式
-=
減後賦值
變數-=表示式
<<=
左移後賦值
變數<<=表示式
>>=
右移後賦值
變數》=表示式
&=
按位與後賦值
變數&=表示式
^=
按位異或後賦值
變數^=表示式
|=
按位或後賦值
變數|=表示式
15
,
逗號運算子
表示式,表示式,…
左到右
從左向右順序運算
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...
運算子優先順序 Python 運算子優先順序
python 運算子優先順序 運算子描述 lambda lambda表示式 or布林 或 and布林 與 not x 布林 非 in,not in 成員測試 is,is not 同一性測試 比較 按位或 按位異或 按位與 移位 加法與減法 乘法 除法與取餘 x,x 正負號 x 按位翻轉 指數 x.a...
運算子優先順序 PHP運算子優先順序
php運算子優先順序 結合方向 運算子附加資訊 非結合clone new clone 和 new左 array 非結合 遞增 遞減運算子 非結合 int float string array object bool 型別非結合 instanceof 型別右結合 邏輯操作符 左 算術運算子 左 算術運...