C語言的操作符有很多種,也很重要,可分爲以下幾類:
1.算術操作符:+ - * / %
除法中:倆個整形相除結果也等於整形;含有浮點型的除法中結果也爲浮點型。
% :模運算只能用於整數,因爲有小數點時,爲浮點數運算,浮點數除法中不存在小數。
int main()
{
int a = 3;
int b = 2;
printf("%d",3/2);//結果爲1,不是1.5
printf("%d",3.0/2);結果爲1.5
return 0;
}
2.移位操作符:>> <<
左移<< 左邊直接拋棄,右邊補0 001 << 2 = 100
右移>> 算術右移:右邊拋棄,左邊補符號位;邏輯右移: 直接補0;
【注意】移位不能用於負數。
一個整數右移相當於這個整數除2;
num>>1==num/2 所以除2的時候可以用右移代替;
0x40000000 << 1 = -2的31次方
左移n位,相當於num乘以2的n次方。
3.位操作符:& | ^
位操作符在C中很少出現,但很重要;
& 按位與 1&0=0 1&1=1;
特點:某一位與上1爲它本身,所以&可以用來取出二進制中的某位;
| 按位或 1|0=1
^ 按位異或 1^0=1 1^1=0 0^0=0
特點 設:a^b==c; c^b==a; c^a==b; 三個數直接異或存在自反性(自己理解)
3.賦值操作符:=
複合賦值操作符: += -= *= /= >= <= == !=
num+=1; num=num+1;
num-=1; num=num-1;
4.單目操作符: ! - + & sizeof ~ -- ++ * (類型)
!:邏輯反操作,真變爲假,假變爲真;
&:取地址符
int num = 20
int arr[10] = {0};
printf("%p\n",&num);
printf("%p\n",arr);//arr表示數組首元素的地址
printf("%p\n"arr[0]);//首元素地址
printf("%p\n",&arr);//這裏arr表示整個數組,對整個數組取地址爲首元素地址
sizeof:計算長度
sizeof (int);
sizeof (num);
sizeof num;以上3種表示方法都可以,但不能表示爲
siozeof int;
~ :二進制按位取反
* :解引用
int *p = #
*p = 20;
(類型):強制類型轉換
5.關係操作符: > < >= <= == !=
== :等於 注意與賦值=區分
防止寫錯可以寫爲
if(5==i)
6.邏輯操作符: && ||
&& :邏輯與 1&&1爲真 當&&左邊爲0時,右邊將不再計算
|| :邏輯或 1||0爲真 當||左邊爲1時,右邊將不再計算
7.條件操作符: exp?exp1:exp2
如果條件exp成立返回1,否則返回2;