C語言運算子優先順序

2021-07-15 03:15:59 字數 2902 閱讀 2160

//   運算子

1.  and

運算(&)

通常用於二進位製取位操作,將運算子兩邊數字轉換成二進位制進行運算,相同的位數均為

1時結果才為

1,否則結果為0.

int a1 = 6; int b1 = 10;

printf("%d\n",a1&b1);

2.  or

運算(|)

採用二進位制位數進行運算,相同的位數只要有乙個為

1,結果為

1,否則為0.

int a2 = 4; int b2 = 2;

printf("%d\n",a2|b2);

3.  xor

運算(^)

採用二進位制位數進行運算,相同位數數字相同為

1,不同為0.

int a3 = 4; int b3 = 2;

printf("%d\n",a3^b3);

// 乙個數與同乙個數異或兩次,結果為本身

// 交換值

int x; int y;

x = x ^ y;

y = x ^ y;

x = x ^ y;

// 逆運算

// 加法和減法互為逆運算,可以把加法減法替換為異或

x = x + y;

x = x - y;

y = x - y;

// 4. not

運算(~)

// 

針對無符號整型,直接把記憶體中的二進位制數

1全部取反

int m = 10;

printf("%d\n",~m);

// 5. shl

運算(<<)

// a shl b

就表示把

a轉為二進位制後左移

b位(在後面添b個

0),例如

4的二進位制為

0100

,而10000

轉成十進位制是16,

4 shl 2 = 16。

int a = 4; int b = 2;

printf("%d\n",a<

// 

可以看出,

a shl b

的值實際上就是a乘以

2的b次方,因為在二進位制數後添乙個

0就相當於該數乘以2。

// 6. shr

運算(<<)

// a shr b

就表示把

a轉為二進位制後右移

b位(在後面減b個

0)int i = 16; int j = 2;

printf("%d\n",i>>j);

// 

可以看出,

a shr b

的值實際上就是a除以

2的b次方

// 優先順序

// 1.

第1⃣️

優先順序: , (), .(

成員選擇--物件

), ->(

成員選擇--指標)

// 相同級別時從左往右執行運算

// 2.

第2⃣️

優先順序: -(

負號運算子

), ++, --, *(

指標運算子

), &

(取位址運算子)

, ~(

按位取反運算子

),!(

邏輯非運算子

), sizeof, (

型別轉換運算子)

// 相同級別時從右往左執行運算

// 3.

第3⃣️

優先順序: *

(乘), /

(除), %(取餘)

// 相同級別時從左往右執行運算

// 4.

第4⃣️

優先順序: +, - //

相同級別時從左往右執行運算

int c = 4; int d = 8;

int s =sizeof!c * d;

printf("%d\n",c+d*c);

printf("%lu\n",sizeof(!c));

printf("%d\n",s);

5.第5⃣️

優先順序:  <<(

左移), >>(右移)

// 相同級別時從左往右執行運算

//    int c = 8; int d = 2;

//    int s =c<<(d+1);

//    int m =(c+d)<<1;

//    printf("%d\n",s);

//    printf("%d\n",m);

//    printf("%lu\n",sizeof c+d);

// 6.

第6⃣️

優先順序: >, >=, <, <=

// 相同級別時從左往右執行運算

int x = 6;int y =10;int z = 0;

z = x > y + 4;

printf("%d\n",z);

z = x + 4 >= 2 + y ;

printf("%d\n",z);

// 7.

第7⃣️

優先順序: ==, !=

// 相同級別時從左往右執行運算

int x = 6;int y =10;int z = 0;

z = x + 4 >= !2*x + y==1 ;

printf("%d\n",z);

// 8.

第8⃣️

優先順序: &(

按位與)

// 相同級別時從左往右執行運算

// 9.

第9⃣️

優先順序: ^(

按位異或)

// 相同級別時從左往右執行運算

// 10.

運算子優先順序 C 運算子優先順序

c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...

C語言運算子優先順序

優先順序運算子 名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目運算子 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數名 單目運...

c語言運算子優先順序

優先順序運算子 名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目運算子 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數名 單目運...