c語言的操作符分為雙目操作符,單目操作符和三目操作符。
一.單目操作符:運算所需變數為乙個的運算子,又叫一元運算子。
邏輯非運算子【!】、
按位取反運算子【~】:包括符號位哦。
自增自減運算子【++, –】:a++ 先使用a,再自增 ;++a 先給a++,再使用
負號運算子【-】
型別轉換運算子【(型別)】:強制型別轉換
int a=1; a=(double)3.14;//將a強制轉換成double型
指標運算子和取位址運算子【*和&】
int a=10;
int * p=&20; //此處*表示為整型指標
* p=20;//*為指標運算子
長度運算子【sizeof】 :求變數時,可省括號:sizeof a //求a變數的型別長度。以位元組為單位。
求型別長度時,不能省略括號: sizeof(int)
二.雙目運算子:運算所需變數為二個的運算子,又叫二元運算子。
1.算數操作符
我們常用的+ - * / % 都屬於算數操作符。
需要注意的是%操作符在使用的時候,兩邊的數必須是整數。
2.移位操作符
移位操作符分為左移位操作符和右移位操作符。
所謂移位操作符即把資料轉換成對應的二進位制數,對其進行左移或者右移的操作。
例如:a=10;//二進位制位為00000000 00000000 00000000 00001010
a>>1;//將a的二進位制位向右移動一位,最右邊的丟棄,左邊補上的位由你的編譯器決定。
右移分為算術右移和邏輯右移。
算術右移即右邊丟棄,左邊補符號位(正數補0,負數補1)。
邏輯移位即右邊丟棄,左邊補0。
a>>1;//00000000 00000000 00000000 00000101 注意:這種情況下,a的值並沒有發生改變。
將a>>1二進位制**對應的10進製數的值為5. 為1/2的a.
所以將乙個數右移,有給該數乘以2的效果。同理,將乙個數左移,相當於給該數·除以乙個2.
3.位操作符
& 按位與……………………對應二進位制位進行與運算(0&0=0,0&1=0,1&1=1)
| 按位或……………………對應二進位制位進行或運算(0|0=0,0|1=1,1|1=1)
^ 按位異或…………………對應二進位制位進行異或運算(相異為1,相同為0)
4.賦值操作符
= 給乙個變數進行賦值
注意:
int a=5;
if(i=5)//這個時候,不管i的值是多少,這裡都將i賦值成5,if語句永遠正確。
所以要注意在用if語句的時候,不要將==與=混淆
printf(「hehe」);
5.復合賦值符
++ – += -= &= ^= |=
6.關係運算子
>= < <= 優先順序相同(高)
!= == 優先順序相同(低)
7.邏輯操作符
&& 邏輯與 當關係式的前面已經判定為假(0)的時候,後面不用進行計算。 0&&任何==0
|| 邏輯或 當關係式的前面已經判定為真(1)的時候,後面不用進行計算。1||任何==1
8.下標引用操作符
陣列 arr[5]等價於*(arr+5)
9.逗號運算子
,一種是做分隔符,另一種是作運算子。在變數宣告語句、函式呼叫中,逗號是做分隔符用的。 當逗號作為運算子使用時,其運算優先順序 是所有運算子中最低的。逗號運算子的運算順序是**自左向右**,
如:int i=8;
a=(a=i+1,i+2,i+3);
上述賦值語句的執行順序為先對a變數賦值9,再計算i+2得10,再計算i+3得11,最後將11作為逗號表示式的值賦給變數a.
三目操作符:
條件操作符
exp1?exp2:exp3 int b=a>3?2:6
exp1為真,則exp2 a>5,b=2;
否則 exp3. a<=5,b=6
c語言操作符 位操作符 移位操作符
1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...
C語言 , 操作符
例如 define to string s s 將會使編譯器把以下命令 cout to string hello world endl 理解為cout hello world endl 例如 define concatenate x,y x y int xy 10 將會使編譯器把 cout conc...
C語言操作符
操作符的分類 1 算術操作符 2 移位操作符 3 位操作符 4 賦值操作符 5 單目操作符 6 關係操作符 7 邏輯操作符 8 條件操作符 9 逗號表示式 1 算術操作符 1 除了 操作符之外,不能用於浮點數。2 對於 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。...