C語言中的運(yùn)算符和結(jié)合性問題
C語言運(yùn)算符和結(jié)合性
優(yōu)先級(jí) | 運(yùn)算符 | 含義 | 要求運(yùn)算對(duì)象的個(gè)數(shù) | 結(jié)合方向 |
---|---|---|---|---|
1 | () | 圓括號(hào) | 自左至右 | |
1 | [] | 下標(biāo)運(yùn)算符 | 自左至右 | |
1 | -> | 指向結(jié)構(gòu)體成員運(yùn)算符 | 自左至右 | |
1 | · | 結(jié)構(gòu)體成員運(yùn)算符 | 自左至右 | |
2 | ! | 邏輯非運(yùn)算符 | 1(單目運(yùn)算符) | 自右至左 |
2 | ~ | 按位取反運(yùn)算符 | 1(單目運(yùn)算符) | 自右至左 |
2 | ++ | 自增運(yùn)算符 | 1(單目運(yùn)算符) | 自右至左 |
2 | -- | 自減運(yùn)算符 | 1(單目運(yùn)算符) | 自右至左 |
2 | - | 負(fù)號(hào)運(yùn)算符 | 1(單目運(yùn)算符) | 自右至左 |
2 | (類型) | 類型轉(zhuǎn)換運(yùn)算符 | 1(單目運(yùn)算符) | 自右至左 |
2 | * | 指針運(yùn)算符 | 1(單目運(yùn)算符) | 自右至左 |
2 | & | 取地址運(yùn)算符 | 1(單目運(yùn)算符) | 自右至左 |
2 | sizeof | 長度運(yùn)算符 | 1(單目運(yùn)算符) | 自右至左 |
3 | * | 乘法運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
3 | / | 除法運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
3 | % | 求余運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
4 | + | 加法運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
4 | - | 減法運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
5 | << | 左移運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
5 | >> | 左移運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
6 | < <= > >= | 關(guān)系運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
7 | == | 等于運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
7 | != | 不等于運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
8 | & | 按位與運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
9 | ^ | 按位異或運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
10 | | | 按位或運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
11 | && | 邏輯與運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
12 | || | 邏輯或運(yùn)算符 | 2(雙目運(yùn)算符) | 自左至右 |
13 | ? : | 條件運(yùn)算符 | 3(三目運(yùn)算符) | 自右至左 |
14 | = += -= *= /= %= >>= <<= &= ^= |= | 賦值運(yùn)算符 | 2(二目運(yùn)算符) | 自右至左 |
15 | , | 逗號(hào)運(yùn)算符(順序求值運(yùn)算符) | 自左至右 |
同一優(yōu)先級(jí)的運(yùn)算符,運(yùn)算次序由結(jié)合方向決定。
-
和++
為同一優(yōu)先級(jí),結(jié)合方向?yàn)樽杂抑磷?,因?code>-i++相當(dāng)于-(i++)
;
不同的運(yùn)算符要求有不同的運(yùn)算對(duì)象個(gè)數(shù),如+
和-
為雙目運(yùn)算符,要求在運(yùn)算符兩側(cè)各有一個(gè)運(yùn)算對(duì)象(3+5
)。
而++
和-
(負(fù)號(hào))運(yùn)算符是單目運(yùn)算符,只能在運(yùn)算符的一側(cè)出現(xiàn)一個(gè)運(yùn)算對(duì)象(如-a
、i++
、--i
、(float)i
、sizeof(int)
、*p
等)。
條件運(yùn)算符是C語言中唯一的三木運(yùn)算符,如x?a:b
。
從上表中可以大致歸納出各類運(yùn)算符的優(yōu)先級(jí)
以上的優(yōu)先級(jí)別由上到下遞減。初等運(yùn)算符優(yōu)先級(jí)最高,逗號(hào)運(yùn)算符優(yōu)先級(jí)最低。
位運(yùn)算符的優(yōu)先級(jí)比較分散(有的在算術(shù)運(yùn)算符之前(如~
),有的在關(guān)系運(yùn)算符之前(如<<
和>>
),有的在關(guān)系運(yùn)算符之后(如&
、^
、|
))。
為了容易記憶,使用位運(yùn)算符時(shí)可加圓括號(hào)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何使用C++結(jié)合OpenCV進(jìn)行圖像處理與分類
在計(jì)算機(jī)視覺領(lǐng)域,OpenCV與C++結(jié)合能高效處理和分類圖像,C++的高執(zhí)行效率適合大規(guī)模數(shù)據(jù)處理,OpenCV提供豐富的功能,如圖像預(yù)處理和機(jī)器學(xué)習(xí)算法,安裝OpenCV需要配置環(huán)境和添加庫文件,本文詳細(xì)介紹了使用C++和OpenCV進(jìn)行圖像分類的過程,包括使用SVM和深度學(xué)習(xí)模型2024-09-09C++實(shí)現(xiàn)簡單的學(xué)生成績管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡單的學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03epoll多路復(fù)用的一個(gè)實(shí)例程序(C實(shí)現(xiàn))
這篇文章主要為大家詳細(xì)介紹了epoll多路復(fù)用的一個(gè)實(shí)例程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08C++之內(nèi)存分區(qū)的實(shí)現(xiàn)示例
本文主要介紹了C++之內(nèi)存分區(qū)的實(shí)現(xiàn)示例,主要包含了4個(gè)區(qū)域,分為代碼區(qū),全局區(qū),棧區(qū)和堆區(qū),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03C++數(shù)據(jù)結(jié)構(gòu)之哈希算法詳解
這篇文章主要為大家詳細(xì)介紹了C++數(shù)據(jù)結(jié)構(gòu)中哈希算法的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,希望對(duì)大家有所幫助2022-12-12C++實(shí)現(xiàn)線性表鏈?zhǔn)酱鎯?chǔ)(單鏈)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)線性表鏈?zhǔn)酱鎯?chǔ),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05