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 算術運...