C語言基礎三 表示式與運算子

2021-08-28 08:52:21 字數 3591 閱讀 2360

1.表示式

在c語言中表示式是用  運算子連線運算元  並且表達某種意思的式子

既然是表達是就會有乙個值

3+4 a+b

2.運算子:

幾目運算子?

a)單目運算子:運算元只有乙個!

b)雙目運算子:運算元只有二個

c)三目運算子:運算元只有三個 ? :

性質:優先順序 

結合性:從左到右,從右到左    

int a =2;

int b=3;

int c;

c=b=a;

2.1算數運算子:從左至右 

1.雙目運算子

* / % 

+ - 

ps:1)3+2*5  <====>13

2)3/2    整數除整數只能為整數

double a=3/2   1.000000

int a=3/2      1

int a=3/2*1.0  1

如果想要結果為小數,在分子分母後面*1.0 並且賦值的型別必須為float double

自動向高精度靠攏

3)%左右兩邊只能為整數  3%2  1 3%-2    a%b=a-(a/b)*b  對取餘存在負數,看被除數

4)4/0 4%0 //error  浮點數例外 (核心已轉儲)

2.單目運算子 ++ --

表示式的值          i的值

i++            i                i=i+1

++i         i+1              i=i+1

i--         i                i=i-1

--i            i-1              i=i-1

2.2關係運算子:判斷2個運算元的關係 從左到右

> >= < <= == !=

關係表示式的值:

1(表示式成立)   0(關係不成立)

ps:5>4>3   *****>(5>4) ==>  1>3  ===>0

2.3邏輯運算子:表達某個式子邏輯

表示式的值:

非0  真(1)

0   假(0)

!   非      單目    

&&   與         雙目   從左至右     並且:有0就是0

1&&0  0    

1&&1  1  

0&&0  0

0&&1  0 

||   或         雙目    從左至右      或者:有1就是1

ex.a=4 b=5

!a       0

4&&5     1

!0       1

4&&5&&0  0

惰性運算:

並不是所有邏輯符後面的表示式都會被執行

1)a&&b&&c 

如果判斷a是假的,那麼b和c都不會被執行

2)a||b||b

如果判斷a是真的,那麼b和c都不會被執行

ex.int a=1;

a&&a--&&a--    表示式值是多少? 0 

a||a--         a的值是多少?    1

ex.判斷某年是否為閏年

1)可以被400整除

2)可以被4整除 並且不能被100整除

1.1)||2)

2.a%400==0

3.a%4==0&&a%100!=0

2.4位運算子

~ | & << >>  ^

a).&(按位與)

1&1=1

1&0=0

0&1=0

0&0=0

3&5  表示式的值  011 & 101   001  

6&10 表示式的值 (用補碼計算)

用途:1)把某些位置0

ex.int flag ;把flag低4位置0 flag=flag&0xfffffff0

2)保留數中某些位

3)取指定位

b).   |(按位或)

1|1=1

1|0=1

0|1=1

0|0=0

用途:把某些位置1

ex.int flag ;把flag低4位置 flag=flag|0xf

c)  ^(按位異或)            

1^1=0

1^0=1

0^1=1

0^0=0(同0異1)

用途:1)把乙個數清0

ex0.5^5   0

ex1.3^5   值011 ^101    結果:110  6

ex2.不用臨時變數交換2個數的值

a=a^b //a1  b1

b=a^b;  //b=a1^0;

a=a^b;// a=0^b1

2)可以把原來的數取反

x^1=~x

x^0=x

d)  <<(左移運算)  雙目運算子

規則:高位捨棄 低位補0

ex.(2<<4) <*****> 2*2(4)

int a=1;

int b=3;

a>(右移運算)

規則:無符號數:低位右移捨棄 高位補0

有符號數:低位右移捨棄 高位補符號位

x>>n;

2>>1 表示式的值:1

如果為正數,相當於除以2的n次方

f)  ~(按位取反) 單目運算

規則:0 - 1

1 - 0

ex.把flag的第23位置0

flag=flag&( ~(1<<22));

把flag的第23位置1

flag=flag|( (1<<22)  );

2.5賦值運算子:雙目運算子(從右向左)

3=4;

賦值號的左邊必須為位址

int a;

a=4error

a+=3;  a=a+3

a*=3; a=a*3

a-=3; a=a-3;

a/=3; a=a/3;

int b=3,c=4;

a=b=c;  //a=4,b=4

2.6條件運算子

表示式 ?a:b

規則:如果表示式為真,取a,否則取b

2.7逗號運算子(雙目運算子)從左至右

b=(a=表示式1,表達2,....表示式n);

1.先算表示式1賦值給a

2.算表達值2

3.算表示式n賦值給b

2.8指標運算子(* &)

2.9位元組運算子

求資料型別所佔的位元組數大小

sizeof(0.8)

sizeof(int)

2.10 分量運算子(. ->)

struct student

;struct student a;

printf("%d",a.no);

struct student *a;

printf("%d",a->no);

2.11

強制型別轉換運算子

float a=3.6;

int b=(int)a+4;

優先順序:

!>算數運算子》關係運算子》&&>||>條件運算子》賦值》逗號運算子

記不清用括號

C語言(三) 運算子與表示式

運算子有以下幾類 1 算術運算子 2 關係運算子 3 邏輯運算子 4 位運算子 5 賦值運算子 6 條件運算子 7 逗號運算子 8 指標運算子 9 求位元組數運算子 sizeof 10 強制型別轉換運算子 型別 11 分量運算子 12 下標運算子 13 其他 如函式呼叫運算子 位運算 左移乘2 右移...

C語言運算子與表示式

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

C語言 運算子與表示式

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