1. 程式人生 > >運算子與表示式

運算子與表示式

C語言一共34種運算子

算術運算子:+  -  *  /  %  ++   --

關係運算符:<  <=  ==  >  >=  !=

邏輯運算子:!  &&  ||

位運算子:<<  >>  ~  |  ^  &

賦值運算子:=   *=   /=   %=    =   -=   <<=    >>=    &=   ^=    |=  

條件運算子:? :

逗號運算子:,

指標運算子: *   &

求位元組數:sizeof

強制型別轉換:(型別)

分量運算子: . ->

下標運算子:[ ]

其他:()

表示式:運算子和運算量的組合式。變數和常量都是表示式。表示式都有值和型別。

賦值運算子、賦值表示式 變數識別符號 = 表示式。將一個數據(常量或表示式)賦給一個變數。 優先順序:低_14

複合賦值運算子: +=  -=  *=  /=  %=  <=  >=  &=  ^=  |=

a+=3;  ->  a=a+3;   x*=y+8 -> x=x*(y+8) ;     x%=3 -> x=x%3;

①賦值運算子左邊必須是變數,不能是常量或表示式。

②賦值運算子左邊變數與右邊表示式型別不同時,自動進行賦值轉換,規則:右邊表示式自動轉換成左邊變數的型別。

例:float  f;

int i=32;

f='A'+32;

則:f=97.0;

int i;

i=2.56;

則:i=2;

③賦值表示式可以巢狀

例:a=b=c=5  a=5

a=(b=5)      a=5

a=5+(c=6)  a=11

強制型別轉換符:在程式執行中,資料的型別改變成另一種資料型別

資料型別轉換方法:自動轉換強制轉換

強制轉換一般形式:(型別名)(表示式)   例 :(int)x+y (只轉換x) ;(int)(x+y);(double)(3/2)

強制轉換得到所需型別的中間變數,原變數型別不變。

算術運算子、算術表示式:  +  -  *  /  %   

括號內表示式優先順序最高  %只能作用於整形量

-a + b * c - d

算術表示式:表示式中的運算子都是算術運算子

自增、自減運算子:前置(++/-- i  先加減1後賦值)和後置(i ++/-- 先賦值後加減1) 單目運算子(單目運算子運算優先順序較高)

i=3 ; print(""%d,-i++);//-3               

++ -- 不能用於常量和表示式。5++ (a+b)++  都是不對的

算術運算子中的型別轉換規則:先自動轉換成同一種類型

自動轉換(運算轉換、賦值轉換、輸出轉換、函式呼叫轉換)



#include <stdio.h>

void main()

  float a,b,c ;

  a=7/2; //int3 = float 3.0

  b=7/2*1.0;// 3.0

  c=1.0*7/2; // 3.5

  printf("a=%f,b=%f,c=%f",a,b,c);//a=3.000000,b=3.000000,c=3.500000

}

位運算子(與&  或|  取反~  異或^   左移<<   右移>>)

位邏輯運算子  ~  &  ^  |




與& 兩個都是1為1其他0    或|有一個是1就是1 兩個都是0是0    異或^ 相同0不同1    取反~就是取反

移位運算子(<<   >>)雙目運算子 必須都是整形量  表示式1<</>>表示式2

(表示式1向左或向右移動表示式2 位 空出的位補0,表示式2一定是正整數)

例  a=00001011; a<<3;  則a=01011000    若a>>3 則 a=00000001

位運算之間的優先順序 ~  <<  >>  &  ^  |

逗號運算子、逗號表示式: 表示式1,表示式2,.....表示式n  ->  順序計算表示式1~n的值    

a=3*5,a*4;// a=15  表示式值=15*4=60

a=3*5,a*4,a+5;// a=15  表示式值=20

a=1;b=2;c=3; printf("",(a,b),b,c);//會輸出2,2,3

其他運算子:sizeof 獲取變數和資料型別所佔記憶體的大小(位元組數)  sizeof 表示式/ sizeof(資料型別名或表示式)

sizeof(int)  sizeov 10L  L是long型 

關係運算符、關係表示式:  <    <=    ==    >=    >   !=  (6個)

優先級別  <   <=   >   >=   ==  !=  高->低

邏輯運算子、邏輯表示式:   !  &&    ||     用於構造複雜表示式 (優先順序 2級  11級  12級

條件運算子、條件表示式:    目運算子   expr1 ? expr2 : expr 3 ;   用於判斷條件,進行選擇處理。優先順序13級 very低

2>1 ?  2 : 1 ;  // 2 

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

C語言組成的基本元素