C語言運算子與表示式

2021-08-09 10:55:12 字數 3211 閱讀 1022

運算子是一種向變異程式說明乙個特定的數學或邏輯運算的符號。主要有三大類:算術運算子、關係運算與邏輯運算子、按位運算子。除此之外,還有一些用於完成特殊任務的運算,如賦值運算子、條件運算子、逗號運算子等。c語言的運算子歸納如下:

(1)算術運算子「+」、「-」、「 * 」、「 / 」、「 % 」。

(2)關係運算子「>」、「<」、「==」、「>=「、」<=」、「!=」。

(3)邏輯運算子「!」、「&&」、「||」。

(4)位運算子「<<」、「>>」、「~」、「|」、「^」、「&」。

①:「按位與」運算子(&)全1為1,有0則0。0&0=0,1&0=0,1&1=1

②:「按位或」運算子(|)有1則1,全0則0。0|0=0,1|0=1, 1|1=1

③:「異或」運算子(^)相同為0,不同為1。0^0=0,1^0=1,1^1=0

(5)賦值運算子「=」及其擴充套件賦值運算子。

(6)條件運算子「?」、「:」。

(7)逗號運算子「,」。

(8)指標運算子「 * 」、「&」。

(9)求位元組數運算子sizeof。

(10)強制型別轉換運算子。

(11)分量運算子「 . 」和「—>」。

(12)下標運算子「 [ ] 」。

一、算術運算子與表示式

1.運算子

c語言基本的算術運算子共有5種:

+(加)、-(減)、*(乘)、/(除)、%(取餘,模運算)

它們都是雙目運算子,即運算子要求有兩個運算元。

(1)要求%運算左右兩數必須為整形資料,如7%4的值為3。

(2)兩個整數相除,結果為整數,捨去小數部分。

(3)參加運算的兩個數中有乙個數為實數,則結果為double型,因為所有的實數都按double型進行運算。

(4)字元型資料可以和數值型資料混合運算。因為字元型資料在計算機內部是用乙個位元組的整形數表示的。

2.算術表示式

(1)算術表示式定義

用算術運算子和括號將運算物件連線起來,符合c語言規則的式子,稱為算術表示式。運算物件包括常量、變數、函式等。

(2)運算子的優先順序和結合性

和數學一樣,c語言的算術表示式運算時,運算子是有優先順序高低之分的,遵循的原則是「先乘除,後加減」。「%」運算與乘除處於同一優先順序都高於加減。

若乙個運算物件兩側的運算子優先順序相同時,則按規定的「結合方向」處理,c語言規定運算子結合性為「自左至右」。

(3)型別轉換

如果乙個運算子兩側的資料型別不同,先自動進行型別轉換,使兩者具有同一型別,然後再進行運算。

(4)取負值運算子

c語言的取負值運算子是「-」(負號)。它是一元運算子,例如:

-x,-b

負值運算的優先順序高於算術運算子的優先順序。

(5)自增與自減運算子

c語言的自增運算子為「++」,自減運算子為「–」,其操作物件只能是變數。作用是使變數的值增1或減1,例如:

++i,–i(在使用i之前,i值先加(減)1)

i++ , i– (在使用i之後,i值再加(減)1)

(6)自增與自減運算子高於算術運算子優先順序,與負值(-)運算子同級。

*例:i=2;

j=-i++;

「++」和「-」是同級優先關係。

按從右至左結合方向,表示式-i++相當於-(i++),計算順序是:

①先計算表示式i++,表示式取i的值為2,然後變數i增1;

②2再做取負值運算,表示式的值為-2;

③將-2賦給變數j。

結果:j=-2,i=3。*

(7)運算子優先順序關係和結合方向。

①從運算子的優先順序來看,可描述如下:

(++,–,-,sizeof,!)>(,/,%)>(+,-)>(<<,>>)>(<,<=,>,>=)>(==,!=)>(&(按位與))>(^(按位異或))>(|(按位或))>(&&(邏輯與))>(||(邏輯或))>(?,:(條件運算))>(=,+=,-=,=,/=,%=,>>=,<<=,&=,^=,|=)>(,(逗號))

②幾種主要運算子的結合方向

運算子 運算類別 結合方向

() 自左至右

++、–、- 單目運算 自右至左

*、/、% 雙目運算 自左至右

+、- 雙目運算 自左至右

<、<=、>=、==、!= 雙目運算 自左至右

, 順序求值 自左至右

二、賦值運算子與賦值表示式

(1).賦值運算子

c語言的賦值運算子為「==」,它的作用是將乙個資料賦給乙個變數。

(2).賦值表示式

①賦值表示式

《變數》《賦值運算子》《表示式》

賦值表示式當中的「表示式」,又可以是乙個賦值表示式

②優先順序

賦值運算子優先順序低於算術運算子、關係運算子和邏輯運算子

③復合賦值運算子

x+=5————>x=x+5;

x*=y+8———->x=x*(y+8);

x%=3————>x=x%3;

a*=b————->a=a*b

復合賦值表示式:

《變數名》《復合賦值運算子》《表示式》

三、逗號運算子和求位元組運算子

(1)、逗號運算子和逗號表示式

c語言提供一種特殊運算子——逗號運算子。用它將兩個表示式連線起來,如a+b,a+c稱為逗號表示式。逗號表示式的一般形式為:

表示式1,表示式2

逗號表示式的求解過程是:先求解表示式1,再求解表示式2。整個逗號表示式的值是表示式2的值。

逗號表示式的一般形式可擴充套件為:

表示式1,表示式2,…,表示式n

它的值為表示式n的值。

(2)求位元組運算子sizeof

c語言的sizeof是乙個單目編譯狀態運算子,它返回變數或括號中的型別修飾字元的位元組長度,一般形式為:

sizeof(變數名)

sizeof(型別名)

四、條件運算子

條件運算子要求有三個操作物件,稱三目運算子。它由兩個符號「?」和「:」組成,其一般形式為:

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

它的運算順序是先求表示式1的值,如果它的值為真(非0值),則求表示式2的值並把它作為整個表示式的值;如果表示式1的值為假(0假),則求表示式3的值冰把它作為整個表示式的值。

C語言 運算子與表示式

1.運算子 用於進行某種運算的符號 通過涉及到的數目分為單目運算子 i 雙目運算子 三目運算子 判斷 a b 在c語言中a b 是不等價與 b a 的,ru i i j 與 i j i c語言運算優先順序,單目運算子 算術運算子 關係運算子 邏輯運算子 條件運算子 賦值運算子 逗號運算子 1 算術運...

C 運算子與表示式

作用 用於處理四則運算 算術運算子包括以下符號 運算子術語示例結果 正號 33 負號 3 3 加 10 515 減10 55 乘10 550 除10 52 取模 取餘 10 31 前置遞增 a 2 b a a 3 b 3 後置遞增 a 2 b a a 3 b 2 前置遞減 a 2 b a a 1 b...

C 運算子與表示式

作用 用於處理四則運算 算術運算子包括以下符號 運算子術語示例結果 正號 33 負號 3 3 加 10 515 減10 55 乘10 550 除10 52 取模 取餘 10 31 前置遞增 a 2 b a a 3 b 3 後置遞增 a 2 b a a 3 b 2 前置遞減 a 2 b a a 1 b...