c語言運算子和表示式

2021-08-28 04:29:21 字數 2747 閱讀 1469

第六次課-----運算子與表示式

一、運算子和表示式

運算子:+  -  *  /  %

表示式:由運算元和運算子組成的式子,如 a-b,1+2 

c語言中單一的乙個變數或者單一的乙個常量是最簡單的表示式

提問:以下程式是輸出變數的值還是表示式的值?

int main(void)

總結:永遠輸出表示式的值!!!

1.優先順序與結合性

優先順序:參照附錄c p359 從1開始逐漸減弱

結合性:同一優先順序時,從左到右或者從右到左的運算順序。

2.單目、雙目和三目運算子

單目運算子:運算物件只有1個,如:++ -- !

雙目運算子:運算子兩側各有乙個運算物件,如: + - * /

三目運算子:運算物件有三個,如: ? : 

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

10 < 15 ? 10 : 15

3.算術運算子和算術運算表示式:+ - * / %

+ - * /:只要有乙個運算物件是浮點型,則表示式的值為double型。

int main(void)

%求餘運算子:兩個運算物件必須都是整數!

20 % 6.5//錯誤,不能是小數

自增++  自減--

++字尾:先讀後寫

int main(void)

printf("%d\n", a++);

相當於printf("%d\n", a);

a = a + 1;

++字首:先寫後讀

int main(void)

printf("%d\n", ++a);

相當於a = a + 1; 

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

4.關係運算子和關係運算表示式:> < == >= <= !=

關係運算表示式的值為「真」或者「假」用「1」和「0」表示。

int a = 15;

int b = 10;

a > b//1

a < b//0

a < 15//0

a > 15//0

a >= 15//1

a == 15//1

a == b//0

a != b//1

5.邏輯運算子和邏輯運算表示式

邏輯運算表示式的值為「真」或者「假」用「1」和「0」表示。

參與運算的物件只要不為0,則運算物件為真。

&&邏輯與運算子:參與運算的物件都為真(不為0),結果才是真。

int a = 15;

int b = 10;

a > b && a < b//0

a > b && a != b//1

a && b//1

||邏輯或運算子:參與運算的物件只要有乙個為真(不為0),結果就是真,只有兩個都是假的,結果才是假。

int a = 15;

int b = 10;

a > b || a < b//1

a > b || a != b//1

a < b || a == b//0

a || b//1

!邏輯非運算子:使表示式的值由真變假,由假變真

int a = 15;

int b = 10;

!(a > b)//0

!(a < b)//1

!a//0

6.賦值運算子和賦值運算表示式:

簡單賦值運算子:=

變數 = 表示式;

a = 45;

復合的賦值運算子: += -= *= /= %=

int a = 15;

a += 10;//a = a + 10;  a = 25;

a -= 10;//a = a - 10;  a = 15;

a *= 2;//a = a*2;  a = 30;

a /= 2;//a = a/2;  a = 15;

a %= 6;//a = a % 6; a = 3;

a++;//相當於a += 1;

a / = 10;//錯誤,不能有空格

7.逗號運算子和逗號運算表示式:,

表示式1,表示式2,表示式3,...

逗號表示式的最終值是最後乙個表示式的值,但是所有的表示式都會執行。

int main(void)

8.sizeof求位元組運算子

sizeof(表示式) 結果為表示式的資料型別佔據的位元組數

int a = 10;

sizeof(int)//4

sizeof(unsigned int)//4 

sizeof(a)//4

sizeof(165)//4

sizeof(a + 10)//4

sizeof(float)//4

sizeof(double)//8

sizeof(long double)//8

9.強制型別轉換運算子:(型別名)(表示式)

int main(void)

10.不同型別的資料混合運算時為了保證運算的精度,計算機會自動轉向精度高的資料型別進行轉換  char 一定會轉換為int 

float 一定會轉換為double

char b = 0;

float c = 0;

char d = 'm'; 

b = 'a'+ 32;//b = 65+32;     

c = 7 / 2.0f;//c = 3.500 000 000 000 000;

000 000 000 000 /2.000 000 000 000 000

C語言運算子和表示式

概述 c語言一共有34種運算子,10種運算型別 算術運算子 關係運算子 位運算子 邏輯運算子 條件運算子 指標運算子 賦值運算子 逗號運算子 求位元組運算子 sizeof 強制型別轉換運算子 型別名 其他 下標 分量 函式 若按參與運算的物件個數,c語言運算子可分為單目運算子 如!雙目運算子 如 和...

C 運算子和表示式

歡迎購買我的專欄 1.高階c 學習 2.網路 c 提供了許多運算子。其中許多都受到內建型別的支援,可用於對這些型別的值執行基本操作。c 中有算術運算子 比較運算子 布林邏輯運算子 位運算子和移位運算子 相等運算子 在下面的 中,表示式的示例位於賦值的右側 int a,b,c a 7 b a c b ...

C語言中運算子和表示式

十分完善。這也是c語言的主要特點之一。c語言的運算子不僅具有 不同的優先順序,而且還有乙個 特點,就是它的結合性。在表示式中,各運算量參與 運算的先後順序不僅要遵守運算子優先順序別的規定,還要受運算子結合性的制約,以便確定是自左向右進行運算還是自右向左進行運算。這種結合性是其它高階語言的運算子所沒有...