您好,登錄后才能下訂單哦!
+,-,*,正常運算就好,但"/"和"%"較為特殊需要注意!
"/":
1)當該符號兩端數據類型都為int時,輸出類型為int 。若符號兩端數據類型不同時,則按精度小的類型進行計算。精度大的數被隱式類型轉換(編譯器自動轉換)為精度小的類型。
2)當除數為一個常數0時,編譯器匯報編譯錯誤。當除數為一個一個變量,變量的值為0時,編譯通過但運行時會錯。
"%":
1)該符號只針對int 整型有效。
2)當符號右端為常數0或變量值為0時,情況與"/"相同。
ps:不要對負數進行移位操作,這是未定義行為!
"<<"左移操作符:
1)按二進制移位;
2)左移n位相當于十進制的*2的n次方;
3)左邊拋棄,右邊補0;
4)左移后原數值在沒有被賦值的情況下是不變的;
#include<stdio.h>
#include<stdlib.h>
int main() {
int num = 10;
printf("%d\n",num<<1 );
printf("%d\n", num);
printf("%d\n", num=num<<1);
system("pause");
return 0;
}
結果為:
">>"右移操作符:
1)按二進制移位;
2)右移n位相當于十進制的 / 2的n次方;
3)邏輯移位:左邊補0,右邊拋棄
算數移位:左邊補符號位,右邊拋棄
4)右移后原數值在沒有被賦值的情況下是不變的;(情況同上,不再做過多贅述)
ps:按二進制位操作,操作數必須為整數
"&":
全1為1,否則為0
"|":
全0為0,否則為1
"^":
相同為0,相異為1
"~":
0變1,1變0
修改變量的值,可以連續連續賦值(例:a=x=y+1),但強烈不建議這么寫,可讀性差。
ps:此處補充一點:賦值與初始化的區別
賦值:修改值
初始化:申請內存空間,放值到內存中
復合運算符與其他運算符功能一樣,但可以使代碼更簡潔
int x=10;
x=x+10;
x+=10;//復合賦值,效果與上式相同
"!"邏輯反操作
"-"負值
"+"正值
"&"取地址
"sizeof"操作數的類型長度(以字節為單位):
編譯過程中求值,運行時才申請內存
"~"對一個數二進制按位取反
"--"前置,后置 --
"++"前置,后置++:
前置后置的區別:
a)不取表達式的值,等價
b)取表達式的值:
前置,返回自增(自減)后的值;
后置,返回自增(自減)前的值
" * "解引用操作符
"(類型)"強制類型轉換:
此處會發生“截斷”現象,即把一個占字節數多的變量賦值給一個占字節數少的變量,會把高位截斷。把一個占字節少的變量賦值給一個占字節數多的變量,高位會進行補位(補符號位)
在前面已經介紹了這些操作符,在此不再贅述,注意 = 和 == 書寫時不要出錯即可。
"&&":邏輯與
&&相當于and
" || ":邏輯或
|| 相當于 or
“短路求值”:
對于&&,若左側表達式值為假,那么右側不再求值,整個表達式結果為假
對于 || ,若左側表達式值為真,那么右側不再求值,整個表達式結果為真
如果表達式1結果為真,則返回表達式2的值,否則返回表達式3的值
ps:優先級最低!!!
整個表達式的結果為最后一個表達式的結果。
數組名+索引值,調用數組的值
類似于char/short這樣的類型,參與算數運算的時候會觸發整型提升,即隱式轉換為int 型再參與運算!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。