運算子表示式總結

2021-09-26 08:12:49 字數 3433 閱讀 1538

1、表示式與語句的區別:

運算子部分:

(1)每個運算子所需要的參與運算的運算元個數。

(2)結合性

(3)優先順序

優先順序運算子

名稱或含義

使用形式

結合方向

說明陣列下標

陣列名[常量表示式]

左到右圓括號

(表示式)

函式名(形參表)

成員選擇(物件)

物件.成員名

成員選擇(指標)

物件指標->成員名

負號運算子

-表示式

右到左單目運算子

(型別)

強制型別轉換

(資料型別)表示式

自增運算子

++變數名

變數名++

單目運算子

自減運算子

--變數名

變數名--

單目運算子

取值運算子

*指標變數

單目運算子

取位址運算子

&變數名

單目運算子

邏輯非運算子

!表示式

單目運算子

按位取反運算子

~表示式

單目運算子

sizeof

長度運算子

sizeof(表示式)

除表示式 / 表示式

左到右雙目運算子

乘表示式*表示式

雙目運算子

餘數(取模)

整型表示式%整型表示式

雙目運算子

加表示式+表示式

左到右雙目運算子

減表示式-表示式

雙目運算子

左移變數《表示式

左到右雙目運算子

右移變數》表示式

雙目運算子

大於表示式》表示式

左到右雙目運算子

大於等於

表示式》=表示式

雙目運算子

小於表示式《表示式

雙目運算子

小於等於

表示式<=表示式

雙目運算子

等於表示式==表示式

左到右雙目運算子

不等於表示式!= 表示式

雙目運算子

按位與表示式&表示式

左到右雙目運算子

按位異或

表示式^表示式

左到右雙目運算子

按位或表示式|表示式

左到右雙目運算子

邏輯與表示式&&表示式

左到右雙目運算子

邏輯或表示式||表示式

左到右雙目運算子

條件運算子

表示式1? 表示式2: 表示式3

右到左三目運算子

賦值運算子

變數=表示式

右到左除後賦值

變數/=表示式

乘後賦值

變數*=表示式

取模後賦值

變數%=表示式

加後賦值

變數+=表示式

減後賦值

變數-=表示式

左移後賦值

變數<<=表示式

右移後賦值

變數》=表示式

按位與後賦值

變數&=表示式

按位異或後賦值

變數^=表示式

按位或後賦值

變數|=表示式

逗號運算子

表示式,表示式,…

左到右上表中可以總結出如下規律:

結合方向只有三個是從右往左,其餘都是從左往右。

所有雙目運算子中只有賦值運算子的結合方向是從右往左。

另外兩個從右往左結合的運算子也很好記,因為它們很特殊:乙個是單目運算子,乙個是三目運算子。

c語言中有且只有乙個三目運算子。

逗號運算子的優先順序最低,要記住。

此外要記住,對於優先順序:算術運算子 > 關係運算子 > 邏輯運算子 > 賦值運算子。邏輯運算子中「邏輯非 !」除外。

運算子在前,先進行計算,再取變數的值使用。變數在前,先取變數值使用,再進行計算。

邏輯運算子&&:有假為假,全真為真;||:有真為真,全假為假。

按位與(&):相同位上有假即位假,全真為真;按位或(|):相同位上有真即為真,全假為假。

按位異或:相同為0,不同為1。

(4)運算子的特殊用法

1.%;   2.=與==;  3.邏輯運算子的短路特性:當邏輯&&運算左邊為假時,就不會再判斷右邊的邏輯運算,邏輯||左邊為假時,會判斷右邊的運算;

(5)位運算的重要意義

1.將乙個運算元中第n位置1,其它位不變。num = num |  1 << n;

2.將運算元中第n位清0,其它位不變。num = num & (1 << n);

3.測試第n位:if(num & 1 << n)

4.從乙個指定寬度的數中取出其中的某幾位:

if(p1 <= p2)

for(i=(p2-p1);i>=0;i--)                     // 選取p1和p2之間的這段位數

putchar(((temp1 >> i) & 1) ? '1' : '0');          // 輸出這個數如果是1,則輸出1,否則輸出0.

printf("\n");

優先順序問題

表示式經常誤認為的結果

實際結果

. 的優先順序高於 *(-> 操作符用於消除這個問題)

*p.f

p 所指物件的字段 f,等價於:

(*p).f

對 p 取 f 偏移,作為指標,然後進行解除引用操作,等價於:

*(p.f)

高於 *

int *ap

ap 是個指向 int 陣列的指標,等價於:

int (*ap)

ap 是個元素為 int 指標的陣列,等價於:

int *(ap )

函式 () 高於 *

int *fp()

fp 是個函式指標,所指函式返回 int,等價於:

int (*fp)()

fp 是個函式,返回 int*,等價於:

int* ( fp() )

== 和 != 高於位操作

(val & mask != 0)

(val &mask) != 0

val & (mask != 0)

== 和 != 高於賦值符

c = getchar() != eof

(c = getchar()) != eof

c = (getchar() != eof)

算術運算子高於位移 運算子

msb <

(msb <

msb <

逗號運算子在所有運 算符中優先順序最低

i = 1, 2

i = (1,2)

(i = 1), 2

運算子 表示式

常見的運算子有,比較運算子 加減運算子 不列了,太多了 其實大可不必記那麼多運算子名稱,總體來說分為三大類 一元運算子 二元運算子 三元運算子 我們先來了解三個單詞 unary,binary,ternary,英文的翻譯是 由x部分組成 中國的前輩們將其翻譯成了一元,二元,三元,中文自帶的抽象屬性是不...

運算子與表示式

學習c語言時,在我們已經學習了型別,常量與變數,接下來就是通過學習運算子與表示式對型別,常量與變數進行運算。簡單說一下概念,用來對資料進行運算的符號,就可以稱為運算子。c中運算子和資料構成的式子,就稱為表示式。表示式再在其後加乙個分號,即構成c 語言語句。先說一下運算子吧。c語言的運算子多,一般記住...

運算子和表示式

運算子 1.算術運算子 定義 int i 2 1 i i 是在 使用完畢之後 2 i i 是在 之後使用 3 i i 是 3 3 是形成運算子的 4 函式是從右邊開始傳參,其中,為結束標誌 例子1 func i i i i,i 6,5,4,i,2 i最後是 7 6 5 4 7 2 例子2 i i i...