複雜表示式的求值有三個影響因素。
1.操作符的優先順序兩個相鄰的操作符先執行那個?取決於他們的優先順序。如果兩者的優先順序相同,取決於他們的結合性。2.操作符的結合性
3.是否控制求值順序。
操作符描述
用法用例
結果型別
結合性是否控制求值順序
()聚組
(表示式)
與表示式相同
n/a否
()函式呼叫
repx(repx,…,repx)
repx
l-r否
[ ]下標引用
repx[repx]
lexp
l-r否
.訪問結構成員
lexp.member_name
lexp
l-r否
->
訪問結構指標成員
rexp->member_name
lexp
l-r否
++字尾自增
lexp++
rexp
l-r否
–字尾自減
lexp - -
rexp
l-r否
!邏輯反
!rexp
rexp
r-l否
~按位取反
~rexp
rexp
r-l否
+單目,表示正值
+rexp
rexp
r-l否
-單目,表示負值
-rexp
rexp
r-l否
++字首自增
++rexp
rexp
r-l否
- -字首自減
- -rexp
rexp
r-l否
*間接訪問
* rexp
lexp
r-l否
&取位址
& lexp
rexp
r-l否
sizeof
取其長度,以位元組表示
sizeof rexp sizeof(型別)
rexp
r-l否
(型別)
型別轉換
(型別)rexp
rexp
r-l否*乘法
rexp * rexp
rexp
l-r否/除法
rexp / rexp
rexp
l-r否
%整數取餘
rexp % rexp
rexp
l-r否+加法
rexp + rexp
rexp
l-r否-減法
rexp - rexp
rexp
l-r否
<<
左移位rexp << rexp
rexp
l-r否
>>
右移位rexp >> rexp
rexp
l-r否
>
大於rexp > rexp
rexp
l-r否
>=
大於等於
rexp >= rexp
rexp
l-r否
<
小於rexp < rexp
rexp
l-r否
<=
小於等於
rexp <= rexp
rexp
l-r否
==等於
rexp == rexp
rexp
l-r否
!=不等於
rexp != rexp
rexp
l-r否&位與
rexp & rexp
rexp
l-r否
^位異或
rexp ^rexp
rexp
l-r否|位或
rexp | rexp
rexp
l-r否
&&邏輯與
rexp && rexp
rexp
l-r是
||邏輯或
rexp ||rexp
rexp
l-r是
?:條件操作符
rexp?rexp:rexp
rexp
n/a是=賦值
lexp=rexp
rexp
r-l否
+=以…加
lexp += rexp
rexp
r-l否
- =以…減
lexp - = rexp
rexp
r-l否
*=以…乘
lexp *= rexp
rexp
r-l否
/ =以…除
lexp / = rexp
rexp
r-l否
%=以…取模
lexp %= rexp
rexp
r-l否
<< =
以…左移
lexp << = rexp
rexp
r-l否
>> =
以…右移
lexp >> = rexp
rexp
r-l否
& =以…與
lexp &= rexp
rexp
r-l否
^ =以…異或
lexp ^ = rexp
rexp
r-l否
| =以…或
lexp |= rexp
rexp
r-l否,逗號
rexp,rexp
rexp
l-r是
MySQL的and操作符和or操作符
有時對where的要篩選的列不止乙個時,那麼就用到了and操作符和or操作符,and操作符顧名思義的意思是 並且 而or操作符的意思是 或者 比如以部門員工表為例 查詢部門編號為d001並且入職日期為 1985 02 02的員工編號,那麼就要用到and操作符 那如果是查詢部門編號為d001或者入職日...
C 中的操作符過載詳細解析
一 什麼是操作符過載 操作符過載可以分為兩部分 操作符 和 過載 說到過載想必都不陌生了吧,這是一種編譯時多型,過載實際上可以分為函式過載和操作符過載。運算子過載和函式過載的不同之處在於操作符過載過載的一定是操作符。我們不妨先直觀的看一下所謂的操作符過載 複製 如下 include using na...
ruby中的 操作符和 操作符
url str foo foo str bar foobar str foo foo str.object id 606274188 str bar foobar str.object id 606283808 str foobar foobarfoobar str.object id 606283...