四、學習筆記,C語言—運算符

運算符

運算符類型說明運算符類型說明
算術運算符+ − * / %指針運算符 * &
關係運算符> < == >= <= ! =求字節數運算符sizeof
邏輯運算符! && ||強制類型轉換運算符(類型)
位運算符<< >> ^ | & ~分量運算符. →
賦值運算符= 及其擴展賦值運算符下標運算符[]
條件運算符? :其他如函數調用運算符()
逗號運算符,

算數運算符

運算符描述 結合性
+單目正從右至左
單目負從右至左
*從左至右
/除和整除從左至右
%取模(取餘)從左至右
+雙目加從左至右
雙目減從左至右

關係運算符

運算符功能說明 示例
>大於a > b或a > 5
>=大於等於a >= b或a >= 5
<小於a < b或a < 5
<=小於等於a <= b或a <= 5
==等於a == b或a == 5
!=不等於a != b或a != 5

邏輯運算符

  • 與運算(&&):

雙目運算符,只有兩個運算量都是1時,運算結果才爲1,左結合型

左運算量 右運算量 &&運算結果
0 0 0
0 1 0
1 0 0
1 1 1
  • 或運算(||):

雙目運算符,只要有一個運算量爲1,結果就爲1,左結合型

左運算量 右運算量 運算結果
0 0 0
0 1 1
1 0 1
1 1 1
  • 非運算(!)

單目運算符,當運算量進行非運算,結果會取反,右結合性

運算量 !運算結果
0 1
1 0

位運算符

運算符功能說明 示例
~位邏輯反~a
&位邏輯與a&b
|位邏輯或a|b
^位邏輯異或a^b
>>右移位a>>1
<<左移位b<<4
  • 非運算(~)

單目運算符,當運算量進行非運算,結果會取反

運算量 ~運算結果
0 1
1 0
  • 與運算符(&)
  • 雙目操作符,當兩個位進行相與時,只有兩者都爲“1”時結果才爲“1”。
左運算量 右運算量 &運算結果
0 0 0
0 1 0
1 0 0
1 1 1
  • 或運算符(|)
  • 雙目操作符,當兩個位進行相或時,兩者中只要有一方爲“1”,結果就爲“1”
左運算量 右運算量 運算結果
0 0 0
0 1 1
1 0 1
1 1 1
  • 異或運算符(|)
  • 雙目操作符,當兩個位進行異或時只要兩者相同,結果就爲“0”,否則結果爲“1”
左運算量 右運算量 ^運算結果
0 0 0
0 1 1
1 0 1
1 1 0
  • 位移位運算

<運算量> <運算符> <表達式>其中:

  • <運算量> 必須爲整型結果數值;
  • <運算符>爲左移位(<<)或 右移位(>>)運算符;
  • <表達式> 也必須爲整型結果數值。

賦值運算符

運算符功能說明 示例
+=加賦值複合運算符a += b 等價於a = a + b
-=減賦值複合運算符a -= b 等價於a = a - b
*= 乘法賦值複合運算符 a *= b 等價於a = a * b
/=除法賦值複合運算符a /= b等價於a = a / b
%=求餘賦值複合運算符a %= b 等價於a = a % b
&=位與賦值複合運算符a &= b 等價於a = & b
|=位或賦值複合運算符a |= b等價於a = a | b
^=位異或賦值複合運算符a ^= b等價於a = a ^ b
>>=位右移賦值複合運算符a >>= b 等價於a = a >> b
<<=位左移賦值複合運算符a <<= b 等價於a = a << b

特殊運算符

條件運算符“?:”

  • 是三目運算符,其運算的一般形式是:
  • <表達式1>?<表達式2>:<表達式3>
<表達式1>?<表達式2>:<表達式3>
關係如下:
if(表達式1)
    表達式2
else
    表達式3
#include <stdio.h>

int main(int argc, char *argv[])
{
        int x = 70, y = 10;

        //y = x++ > 70 ? x + y : 5;
        y = ++x > 70 ? x + y : 5;

        printf("x=%d y = %d\n", x, y);
        
        return 0;
}

逗號運算符“,”

float x = 10.5, y = 18, z = 0;
z = (x += 5, y = x + 0.2)
z賦值爲15.7, x賦值爲15.6, y賦值爲15.7

z = (x = y = 5, x += 1)
z賦值爲6, x賦值爲6, y賦值爲5

z = (x = 5, y = 6, x + y)
z賦值爲11, x賦值爲5, y賦值爲6

z = (z = 8,x = 5, y = 3)
z賦值爲3, x賦值爲5, y賦值爲3

sizeof操作符

  • 單目運算符,它的運算對象是變量或數據類型,運算結果爲一個整數
  • sizeof(<類型或變量名>)

運算符優先級

運算符的優先級和結合性

優 先 級運 算 符"含義"運算對象個數結 合 方 向
1()圓括號自左向右
[]下標運算符
−>指向結構體成員運算符
.結構體成員運算符
2!邏輯非運算1(單目)自右向左
按位取反運算
++自增運算符
− −自減運算符
負號運算符
(類型)類型轉換運算符
*指針運算符
&地址運算符
sizeof長度運算符
3*乘法運算符2(雙目)自左向右
/除法運算符
%求餘運算符
4+加法運算符2(雙目)自左向右
減法運算符
5<<左移運算符2(雙目)自左向右
>>右移運算符
6<關係運算符2(雙目)自左向右
<=
>
>=
7= =等於運算符 2(雙目)自左向右
!=不等於運算符
8&按位與運算符2(雙目)自左向右
9^按位異或運算符2(雙目)自左向右
10|按位或運算符2(雙目)自左向右
11&&邏輯與運算符2(雙目)自左向右
12||邏輯或運算符2(雙目)自左向右
13? :條件運算符3(三目)自右向左
14=賦值運算符2(雙目)自右向左
+=
−=
*=
/=
%=
>>=
<<=
&=
^=
|=
15逗號運算符自左向右
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章