c語言操作符
+ - * / %
除了%操作符只能用於
int
型,剩餘都可用在
float
和int
型《左移操作符:左邊拋棄,右邊補0。
>>右移操作符:
(1):邏輯移位:左邊用0填充,右邊丟棄。
(2):算術移位:左邊用原該值的符號位填充,右邊丟棄。
邏輯移位需要注意只可用於正數在負數中不適合(在計算機儲存中32位位元位中第一位預設為符號位:
正數為0,負數為
1)。電腦中預設為算術移位
注意!!!!!對於移位運算子,不要移動負數字。
按位與& ;按位或
|;按位異或^。
&:對應位元位都為
1,按位與後對應位元位為
1。其餘都為0
|:對應位元位有乙個為
1,按位或後對應位元位為
1,其餘為0
^:對應位元位相同為
0,不同為1。
eg:1和
3的三種操作符計算
1的位元位:
00000000 00000000 00000000 00000001
3的位元位:
00000000 00000000 00000000 00000011
1&3:
00000000 00000000 00000000 00000001
1|3:
00000000 00000000 00000000 0000000
1^3: 00000000 00000000 00000000 000000010
按位操作符計算的都是整數。
只有=。
賦值操作符可以連續使用,eg:
a=x=y+1;(1) x=y+1; a=x;(2)
大家可以看出來第二種比較好看一些,而且易於除錯。
+=(x=x+1
); -=(x=x-1) ;
類似的還有
*= /= %= >>= <<= &= |= ^=
這些操作符都可以達成復合的效果。
!:邏輯反操作; - + 正負值;
&sizeof
:運算元的型別長度
~:對乙個二進位制按位取反;
-- ++
:前後置
++ --
;
*:間接訪問操作符
(型別):強制型別轉換。
特別注意的是sizeof 這個操作符:
&陣列名,
sizeof
(陣列名)不代表首元素位址,代表整個陣列。除此之外所以陣列名都是首元素位址。
&arr+1: 跳過整個陣列
< <= > >= !=(不相等)
==(相等)
特別注意if()括號中的判斷語句用
==
不是賦值語句中的等號。
八、邏輯操作符
邏輯與:&& 邏輯或||
給出乙個邏輯也和或的特點:
int i=0,a=0,b=2,c=3,d=4;
i=a++&&++b&&d++;
i=a++||++b||d++;
printf(「
a=%d\n b=%d\n c=%d\n d=%d\n
」,a,b,c,d)
兩種運算下輸出的答案有什麼不同
進行&&時:輸出為
1 2 3 4
當第乙個
a++為
0時值為假後面運算不運算。
進行||時: 輸出為
1 3 3 4
當第乙個為
0 ++b為1
時值為真後面運算不運算。
exp1 ? exp2 : exp3
exp1 為判斷式,解讀為
exp1
為真時取值
exp2
,為假時取值
exp2.
逗號表示式,就是用逗號隔開的多個表示式。從左向右依次執行。整個表示式的結果是最後乙個表示式結果。
1. 【】
運算元:乙個陣列名+乙個索引值
eg:int arr【10
】;//
建立乙個陣列
2()函式呼叫操作符:接受乙個或者多個運算元:第乙個運算元是函式名,剩餘的運算元就是傳遞給函式的引數。
3:訪問乙個結構的成員
. 結構體
.成員名
-> 結構體指標
->
成員名
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 對於 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。...