C語言運算符及其優(yōu)先級匯總表口訣
C語言運算符及其優(yōu)先級匯總表口訣
圓下箭頭一頓號
非凡增減富強針地長
三乘除,四加減,五移位
千萬別把魚忘記,它在盛飯的廚子里
小燈大燈燈燈不等
爸喂魚,舅疑惑,裸雞也疑惑
十三姨,十四父,十五逗,兜到低
“圓下箭頭一頓號”指的是第15級的運算符。其中圓指的是運算符(),下指的是下標運算符[],箭頭指的是指向結構體成員運算符->,頓號指的是結構體成員運算符、
“非凡增減富強針地長”指的是第14級的運算符。其中非指的是邏輯運算符!,凡指的是按位取反運算符~,增減指的是自增和自減運算符++和--,富指的是負號運算符-,強指的是類型轉(zhuǎn)換運算符(類型),針指的是指針運算符*,地指的是地址運算符&,長指的是長度運算符Sizeof
“三乘除,四加減,五移位” 指的是第13級到第11級的運算符。其中三四五并無實際意義,只是起區(qū)分級別而已。也可以想象三指的是第13級運算符。乘除指的是乘法運算符*和除法運算符/,加減指的是加法運算符+和減法運算符-,移位指的是左移運算符<<和右移運算符>>
“千萬別把魚忘記,它在盛飯的廚子里”指的是求余運算符%,它位于盛飯的廚子里,即指和乘法運算符、除法運算符在一起。
“小燈大燈燈燈不等” 指的是第10級到第9級的運算符。其中小燈大燈指的是關系運算符<、<=、>和>=,燈燈指的是等于運算符==,不等指的是不等于運算符!=
“爸喂魚,舅疑惑,裸雞也疑惑”指的是第8級到第4級的運算符。其中,爸喂魚之指的是第8級的按位與運算符&,舅疑惑指的是第7級的按位異或運算符^和第6級的按位或運算符||,裸雞也疑惑指的是第5級、第4級的邏輯與運算符&&和邏輯或運算符||
“十三姨,十四父,十五逗,兜到低” 指的是第3級到第1級的運算符。其中,十三姨指的是條件運算符?: (三有雙重含義,即指?:的優(yōu)先級別是三,它的運算符類型也是三目,?難道不是姨即疑惑嗎?),十四父的十四沒有實際意義,父指的是賦值運算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、 ^=和|= ,十五逗指的是第1級的運算符,兜到低指的是15級運算符以,結束。
附錄:C語言運算符及優(yōu)先級
優(yōu)先級 運算符 含義 運算符類型 結合方向
15 () 圓括號 單目 自左向右
[] 下標運算符
—> 指向結構體成員運算符
、 結構體成員運算符
14 ! 邏輯非運算符 自右向左
~ 按位取反運算符
++ 自增運算符
-- 自減運算符
- 負號運算符
(類型) 類型轉(zhuǎn)換運算符
* 指針運算符
& 地址運算符
Sizeof 長度運算符
13 * 乘法運算符 雙目 自左向右
/ 除法運算符
% 求余運算符
12 + 加法運算符
- 減法運算符
11 << 左移運算符
>> 右移運算符
10 <、<=、>、>= 關系運算符
9 == 等于運算符
!= 不等于運算符
8 & 按位與運算符
7 ^ 按位異或運算符
6 | 按位或運算符
5 && 邏輯與運算符
4 || 邏輯或運算符
3 ?: 條件運算符 三目 自右向左
2 =、+=、-=、*=、
/=、%=、>>=、
<<=、&=、^=、|= 賦值運算符 雙目
1 , 逗號運算符 雙目 自左向右
②
括號成員第一; //括號運算符[]() 成員運算符. ->
全體單目第二; //所有的單目運算符比如++ -- +(正) -(負) 指針運算*&
乘除余三,加減四; //這個"余"是指取余運算即%
移位五,關系六; //移位運算符:<< >> ,關系:> < >= <= 等
等于(與)不等排第七; //即== !=
位與異或和位或; //這幾個都是位運算: 位與(&)異或(^)位或(|)
"三分天下"八九十;
邏輯或跟與 //邏輯運算符:|| 和 &&
十二和十一; //注意順序:優(yōu)先級(||) 底于 優(yōu)先級(&&)
條件高于賦值, //三目運算符優(yōu)先級排到 13 位只比賦值運算符和","高//需要注意的是賦值運算符很多!
逗號運算級最低! //逗號運算符優(yōu)先級最低
由于C語言的運算符優(yōu)先級與C++的不完全一樣(主要是增加了幾個運算符),所以這個口訣不能完全實用于C++.但是應該能夠兼容,大家可以比較一下他們的區(qū)別應該就能夠很快掌握C++的優(yōu)先級的!
((*strDest++=*strSrc++)!='\0'); :
重點:++后增運算符優(yōu)先級高于*
1.*strDest++相當于 *(strDest++)
2.由于是后自增,故執(zhí)行順序為:
*strDest=*strSrc
strDest++ strsrc++ //該級順序不明
將*strDest與'\0'比較 //即,整個表達式的值為*strDest與'\0'的比較結果
值得注意的是,對于賦值表達式,表達式本身的值等于左邊子表達式的值。
通過以上深入的分析,我們知道這個表達式完成了以下多個功能:
1.對于指針strDest, strSrc,將strSrc所指的內(nèi)存空間的值賦給由strDest所指的內(nèi)存空間。
2.判斷賦值后的strDest所指的內(nèi)存空間的指是否等于0。
3.對于指針strDest,strSrc,他們的值分別加1,即指向下一個元素。
即:該表達式實現(xiàn)了以下三個功能:
1.對于指針strDest, strSrc,將strSrc所指的內(nèi)存空間的值賦給由strDest所指的內(nèi)存空間。
2.判斷賦值后的strDest所指的內(nèi)存空間的值是否等于0。
3.對于指針strDest,strSrc,他們的值分別加1,即指向下一個元素。C語言運算符表
運算符按照優(yōu)先級大小由上向下排列,在同一行的運算符具有相同優(yōu)先級。第二行是所有的一元運算符。
|
|
|
() [] -> . | 括號(函數(shù)等),數(shù)組,兩種結構成員訪問 |
|
! ~ ++ -- + -
* & (類型) sizeof |
否定,按位否定,增量,減量,正負號,
間接,取地址,類型轉(zhuǎn)換,求大小 |
|
* / % | 乘,除,取模 |
|
+ - | 加,減 |
|
<< >> | 左移,右移 |
|
< <= >= > | 小于,小于等于,大于等于,大于 |
|
== != | 等于,不等于 |
|
& | 按位與 |
|
^ | 按位異或 |
|
| | 按位或 |
|
&& | 邏輯與 |
|
|| | 邏輯或 |
|
? : | 條件 |
|
= += -= *= /=
&= ^= |= <<= >>= |
各種賦值 |
|
, | 逗號(順序) |
|
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11ajax實現(xiàn)頁面的局部加載