日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

C语言优先级——取反和移位

發(fā)布時(shí)間:2025/4/5 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言优先级——取反和移位 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

遇到一個(gè)面試題:

unsigned char a=0xA5;
unsigned char b=~a>>4;

結(jié)果是245,提示的是先提升類型然后移位,然后取反,然后截?cái)唷?/p>

但是單目運(yùn)算符的優(yōu)先級(jí)高于移位運(yùn)算符啊,難道因?yàn)閪是自右向左結(jié)合的?

?

在VS2008中測(cè)試

unsigned char a=0xA5;
unsigned char b=~(a>>4);

結(jié)果b還是254?難道給做了處理?頭疼!

?

C++中算術(shù)運(yùn)算只能針對(duì)int類型,因此會(huì)有提升,提升了以后取反,高位的都是1了,移位以后高四位都是1,因此最后的結(jié)果是245,但是過程不是提示的那樣子。

1:整值提升
0xA5?==?10100101?->?00000000?00000000?00000000?10100101

2:取反
00000000?00000000?00000000?10100101?->?11111111?11111111?11111111?01011010

3:右移
11111111?11111111?11111111?01011010?>>?4?==?11111111?11111111?11111111?11110101(算術(shù)移位)?或者?00001111?11111111?11111111?11110101(邏輯移位)

4:截?cái)?br /> b?==?0xf5即245

?

運(yùn)算符優(yōu)先級(jí):

-初等,4個(gè): ( ) [ ] -> 指向結(jié)構(gòu)體成員 . 結(jié)構(gòu)體成員?
-單目,10個(gè): !(邏輯取反) ~(位取反,位操作符)?++ -- -負(fù)號(hào) +正號(hào) (類型)???*指針 &取地址 sizeof長(zhǎng)度 (結(jié)合方向:自右向左)
-算術(shù),5個(gè): * / % + -?
-位移,2個(gè): << >>? ?(位操作符)
-關(guān)系,6個(gè): < <= > >= == 等于 != 不等于?
-位邏,3個(gè): & 按位與 ^ 按位異或 | 按位或? (位操作符)
-邏輯,2個(gè): && 邏輯與 || 邏輯或?
-條件,1個(gè),三目: ? :?????????????????????????????????????????????????????????(結(jié)合方向:自右向左)
-賦值,11個(gè): = += -= *= /= %= >>= <<= &= ^= |=?????????(結(jié)合方向:自右向左)
-逗號(hào),1個(gè): ,?
結(jié)合方向自右向左的只有三類:賦值、單目和三目,其它的都是從左至右結(jié)合

?

C語(yǔ)言優(yōu)先級(jí)

優(yōu)先級(jí)運(yùn)算符名稱或含義使用形式結(jié)合方向說明符號(hào)性質(zhì)
1[]數(shù)組下標(biāo)數(shù)組名[整型表達(dá)式]左到右?初等(4個(gè))
()圓括號(hào)(表達(dá)式)/函數(shù)名(形參表)?
.成員選擇(對(duì)象)對(duì)象.成員名?
->成員選擇(指針)對(duì)象指針->成員名?
2-負(fù)號(hào)運(yùn)算符-算術(shù)類型表達(dá)式右到左單目運(yùn)算符單目(10個(gè))
+正號(hào)運(yùn)算符+算術(shù)類型表達(dá)式單目運(yùn)算符
(type)強(qiáng)制類型轉(zhuǎn)換(純量數(shù)據(jù)類型)純量表達(dá)式?
++自增運(yùn)算符++純量類型可修改左值表達(dá)式單目運(yùn)算符
--自減運(yùn)算符--純量類型可修改左值表達(dá)式單目運(yùn)算符
*取值運(yùn)算符*指針類型表達(dá)式單目運(yùn)算符
&取地址運(yùn)算符&表達(dá)式單目運(yùn)算符
!邏輯非運(yùn)算符!純量類型表達(dá)式單目運(yùn)算符
~按位取反運(yùn)算符~整型表達(dá)式單目運(yùn)算符
sizeof長(zhǎng)度運(yùn)算符

sizeof 表達(dá)式

sizeof(類型)

?
3/表達(dá)式/表達(dá)式左到右雙目運(yùn)算符算術(shù)(5個(gè))
*表達(dá)式*表達(dá)式雙目運(yùn)算符
%余數(shù)(取模)整型表達(dá)式%整型表達(dá)式雙目運(yùn)算符
4+表達(dá)式+表達(dá)式左到右雙目運(yùn)算符
-表達(dá)式-表達(dá)式雙目運(yùn)算符
5<<左移整型表達(dá)式<<整型表達(dá)式左到右雙目運(yùn)算符位移(2個(gè))
>>右移整型表達(dá)式>>整型表達(dá)式雙目運(yùn)算符
6>大于表達(dá)式>表達(dá)式左到右雙目運(yùn)算符關(guān)系(6個(gè))
>=大于等于表達(dá)式>=表達(dá)式雙目運(yùn)算符
<小于表達(dá)式<表達(dá)式雙目運(yùn)算符
<=小于等于表達(dá)式<=表達(dá)式雙目運(yùn)算符
7==等于表達(dá)式==表達(dá)式左到右雙目運(yùn)算符
!=不等于表達(dá)式!= 表達(dá)式雙目運(yùn)算符
8&按位與整型表達(dá)式&整型表達(dá)式左到右雙目運(yùn)算符位邏(3個(gè))
9^按位異或整型表達(dá)式^整型表達(dá)式左到右雙目運(yùn)算符
10|按位或整型表達(dá)式|整型表達(dá)式左到右雙目運(yùn)算符
11&&邏輯與表達(dá)式&&表達(dá)式左到右雙目運(yùn)算符邏輯(2個(gè))
12||邏輯或表達(dá)式||表達(dá)式左到右雙目運(yùn)算符
13?:條件運(yùn)算符表達(dá)式1? 表達(dá)式2: 表達(dá)式3右到左三目運(yùn)算符條件(1個(gè))
14=賦值運(yùn)算符可修改左值表達(dá)式=表達(dá)式右到左?賦值(11個(gè))
/=除后賦值可修改左值表達(dá)式/=表達(dá)式?
*=乘后賦值可修改左值表達(dá)式*=表達(dá)式?
%=取模后賦值可修改左值表達(dá)式%=表達(dá)式?
+=加后賦值可修改左值表達(dá)式+=表達(dá)式?
-=減后賦值可修改左值表達(dá)式-=表達(dá)式?
<<=左移后賦值可修改左值表達(dá)式<<=表達(dá)式?
>>=右移后賦值可修改左值表達(dá)式>>=表達(dá)式?
&=按位與后賦值可修改左值表達(dá)式&=表達(dá)式?
^=按位異或后賦值可修改左值表達(dá)式^=表達(dá)式?
|=按位或后賦值可修改左值表達(dá)式|=表達(dá)式?
15,逗號(hào)運(yùn)算符表達(dá)式,表達(dá)式,…左到右從左向右順序結(jié)合逗號(hào)(1個(gè))

說明:

同一優(yōu)先級(jí)的運(yùn)算符,結(jié)合次序由結(jié)合方向所決定。

簡(jiǎn)單記就是:! > 算術(shù)運(yùn)算符 > 關(guān)系運(yùn)算符 > && > || > 賦值運(yùn)算符

總結(jié)

以上是生活随笔為你收集整理的C语言优先级——取反和移位的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。