算數操作符 (+ - * / %)
移位操作符(>>和<<)
位操作符 (& | ^)
賦值操作符(=)(復合賦值符:+= -= *= != <<= >>= &= ^= |=)
單目操作符(! ~ + - ++ – & * (型別) sizeof)
關係操作符(> >= < <= != == )
邏輯操作符(&& ||)
條件操作符(expression1?expression2:expression3)
逗號操作符(,)
下標引用、函式呼叫和結構成員( array[下標] *(array)+下標)
算數表示式(+ - * / %)
(1) 除了%的用於取模運算(取餘),其兩個運算元必須為整數外,其餘四個操作符既適用於整數也適用於浮點數
(2) 對於/的兩個運算元如果都為整數的話,運算結果也為整數(小數部分會自動截斷)。所以在使用/時要注意,如果要得到浮點型的資料的話/兩端的運算元至少有乙個是浮點數
int main()
很顯然 b是浮點數 ,我們希望 b=3.333333 但是事實上 b=3
移位操作符(>>和<<)
>>和<<的運算元必須為整形,他們是對乙個整數的二進位制序列進行操作的
在**<<** 操作中,把乙個值向左移動,最左邊的幾位被丟棄,右邊用0,來補齊。
在**>>操作中,把乙個值向右移動。但在左邊移入新位的時候出現了問題:
1.左邊移入位用0填充,這種方式是邏輯移位**
2.左邊移入用原先該值的符號位決定(符號位位1,則移入的位均為1;符號位為0,則移入的均為0),這種方式是算數移位,這種方式可以保證正負形式不變。
左移
int num=13;
num<<1 ;
00000000000000000000000000000000001101
000000000000000000000000000000000011010
在左移時由於向左移動一位,就等價於每一位2,所以左移一位,相當於給num2,結果為26
右移
int num=-1
num>>1;
10000000000000000000000000000000000001//原碼
11111111111111111111111111111111111110//反碼
11111111111111111111111111111111111111//補碼
111111111111111111111111111111111111111 //右移一位
11111111111111111111111111111111111110///減1
10000000000000000000000000000000000001//取反
在記憶體中正數的補碼和他的原碼相同,負數不同,結果為-1
位操作符 (& | ^)
同樣是對二進位制位的操作,
&按位與,如果兩個位都是1,結果為1;否則,結果為0;
|按位或,兩個位只要有乙個為1,結果為1,;兩個位都為0,結果為0;
**^**按位異或,兩個位相同結果為0;不同結果為1;
*賦值操作符(=)(復合賦值符:+= -= = != <<= >>= &= ^= |=)
a=x=y+3; <===> a=(x=y+3);
a+=1 <=> a=a+1
單目操作符(! ~ + - ++ – & * (型別) sizeof)
!邏輯反操作; 如果運算元為真,其結果為假,如果運算元為假,其結果為真;
~將運算元所有位為1 的數變為0,所有位為0的數變為1;
+ 和 -分別作用是產生運算元 和產生運算元的負數;
**++ 和 – **自增自減操作符 ,風為前置和後置;
int num=0,n=0,m=0;
n=num++;//n的值為0,num值變為1 先使用再自增
m=++num;//m的值為2,num值為2 先自增再使用
** & * **
&為取位址操作符
*為間接訪問操作符,與指標一起使用
int a=0,*b;
b=&a; //將a的位址賦給指標b;
*b=3;//將a的值改為3
**(型別) **強制型別轉換,它用於顯示地把表示式轉換為另外的型別
sizeof判斷運算元的型別長度:
sizeof(int)//不可寫為sizeof int
sizeof x <=>sizeof(x)
關係操作符(> >= < <= != == )通常用於條件判讀
if()
邏輯操作符(&& ||)
expression1&& expression2
如果表示式 expression1和 expression2結果都為真那麼整個表示式結果為真。如果有乙個為假,則整個表示式結果為假。
如果 expression1結果為假 則不進行 expression2,整個表示式結果直接為假
expression1|| expression2
如果表示式 expression1和 expression2結果有乙個為真那麼整個表示式結果為真。如果都為假,則整個表示式結果為假。
*如果 expression1結果為真 則不進行 expression2,整個表示式結果直接為真
條件操作符(expression1?expression2:expression3)
表示式expression1為真,則整個表示式的值為expression2,expression3不進行運算;否則,整個表示式的值為expression3,expression2不進行運算
比如以下**
if(a>3)
else
等價於b=a>3?1:2;
逗號操作符(,)
表示式從左向右依次求值,但最後表示式的值為最右面表示式的值
*下標引用、函式呼叫和結構成員( array[下標] (array)+下標)
c語言中的操作符歸納
操作符 1.操作符的分類 算數操作符 對於 來說,如果兩個操作符都為整數,執行整數除法,只要有浮點型別的執行就進行浮點數的除法。的兩個運算元,必須為整數。對負數進行取模相當於對其加模數。2.移位操作符 左移的補零,右移則補符號位。3.位操作符 按位與 按位或 按位異或0 0 0 0 0 0 0 0 ...
C 操作符總結
c 操作符總結 1算術操作符 操作符只能用整數,其他的操作符都可以作 於整數和浮點數。2移位操作符 左移和右移 左移 左邊拋棄 右邊補零 右移有兩種 邏輯移位 右邊丟棄,左邊補零 算術移位 右邊丟棄,左邊補原符號位 不移動負數字,3位操作符 按位與 按位或 按位異或 他們的運算元必須是整數 4賦值操...
C語言操作符總結
c語言操作符總結 1.算數操作符 有浮點數則為浮點除法 全為整形 2.移位操作符 所有的移位操作符都是二進位制移位 左移 效果 左邊拋棄右邊補0.右移 效果 1 符號位 算術移位 原該值的符號位 2 0 邏輯移位 警告 不要移動負數字 3.位操作符 按位與 按位或 按位異或 注意 全都為二進位制位操...