符號(hào):+? - ?*? /?%
注釋:
??+ :用于整數(shù)和浮點(diǎn)數(shù)的加法
??- :用于整數(shù)和浮點(diǎn)數(shù)的減法
??* :用于整數(shù)和浮點(diǎn)數(shù)的乘法
??/ :用于整數(shù)和浮點(diǎn)數(shù)的除法
??% :用于兩整數(shù)相處取余數(shù)
注意:
??1.除了%操作符之外,其他的幾個(gè)操作符可以用于整數(shù)和浮點(diǎn)數(shù)。
??2.對(duì)于/操作符如果兩個(gè)操作符都為整數(shù),執(zhí)行整數(shù)除法,而只要有浮點(diǎn)數(shù)執(zhí)行的就是浮點(diǎn)數(shù)除法。
??3.%操作符的兩個(gè)操作數(shù)必須是整數(shù),返回的是整除后的余數(shù)。
符號(hào):< >>
注釋:
??<< :左移位操作符
??>>:右移位操作符
注意:移位操作符的操作數(shù)只能是整數(shù)
移位規(guī)則:
????左邊拋棄,右邊補(bǔ)0,相當(dāng)于*2
移位規(guī)則:
????右移操作符分兩種:
????????1.邏輯移位
??????????左邊用0填充,右邊丟棄
????????1.算術(shù)移位
??????????左邊用原該值的符號(hào)位補(bǔ)充(第一位0表示正數(shù),1表示負(fù)數(shù)),右邊丟棄,編譯器中通常是算術(shù)移位,有除以2的效果
補(bǔ)充:數(shù)據(jù)的存儲(chǔ)
數(shù)據(jù)在內(nèi)存中是以2進(jìn)制的形式儲(chǔ)存的,對(duì)于整數(shù)而言,整數(shù)的二進(jìn)制有3種表示形式:原碼,反碼,補(bǔ)碼。
??正整數(shù):原碼,反碼,補(bǔ)碼相同
??負(fù)整數(shù):原碼,反碼,補(bǔ)碼不同,要進(jìn)行計(jì)算。負(fù)整數(shù)在內(nèi)存中存儲(chǔ)的是二進(jìn)制的補(bǔ)碼,打印的是這個(gè)數(shù)的原碼。
1.按照數(shù)值直接寫出的是二進(jìn)制的原碼
2.原碼的符號(hào)位不變,其他位按位取反,就得到了反碼
3.反碼+1就是補(bǔ)碼
例:-10的原碼:1000 0000 0000 0000 0000 0000 0000 1010
??????? 1111 1111 1111 1111 1111 1111 1111 0101–>-10的反碼(符號(hào)位不變,其余位全部按位取反)
??????? 1111 1111 1111 1111 1111 1111 1111 0110–>補(bǔ)碼(反碼+1就是補(bǔ)碼)
符號(hào):&? | ? ^
注釋:
??& :按位與 :二進(jìn)制位與二進(jìn)制位 (有一個(gè)為假,則為假)
??| :按位或:二進(jìn)制位與二進(jìn)制位 (有一個(gè)為真,則為真)
??^ :按位異或:對(duì)應(yīng)的二進(jìn)制位相同,則為0 。對(duì)應(yīng)的二進(jìn)制位相異,則為1。
注:他們的操作必須是整數(shù)
例1:
注:num1:0000 0000 0000 0000 0000 0000 0000 0010
?num2:0000 0000 0000 0000 0000 0000 0000 0001
?num1 & num2:0000 0000 0000 0000 0000 0000 0000 0000—>十進(jìn)制表示:0
?num1 | num2:0000 0000 0000 0000 0000 0000 0000 0011—>十進(jìn)制表示:3
?num1 ^ num2:0000 0000 0000 0000 0000 0000 0000 0011—>十進(jìn)制表示:3(相同為0,相異為1)
例2:
注:num1 的原碼:1000 0000 0000 0000 0000 0000 0000 0011
??num1的反碼:1111 1111 1111 1111 1111 1111 1111 1100
??num1的補(bǔ)碼:1111 1111 1111 1111 1111 1111 1111 1101
??num2的原碼:1000 0000 0000 0000 0000 0000 0000 0001
??num2的反碼:1111 1111 1111 1111 1111 1111 1111 1110
??num2的補(bǔ)碼:1111 1111 1111 1111 1111 1111 1111 1111
num1 & num2(補(bǔ)碼):1111 1111 1111 1111 1111 1111 1111 1101
num1 & num2(反碼):1111 1111 1111 1111 1111 1111 1111 1100
num1 & num2(原碼):1000 0000 0000 0000 0000 0000 0000 0011—>十進(jìn)制表示:-3
符號(hào):簡(jiǎn)單賦值符: =?
??復(fù)合賦值符:+=? -= ?*=?/= ? %= ?>>= ?<<= ? &= ? |= ?^=
int a = 1;
a = 2;//簡(jiǎn)單賦值操作
double b = 3.0;
b = 10.0 //簡(jiǎn)單賦值
int a = 5;
a = a + 5;
a += 5;//復(fù)合賦值符
int b = 3;
b = b - 1;
b -= 1//復(fù)合賦值符
5.單目操作符
5.1單目操作符介紹符號(hào):
?? !?--------邏輯取反
?? - ? --------負(fù)值
?? + ?--------正值
?? & ?--------取地址
?? sizeof --------操作數(shù)的類型長(zhǎng)度
?? ~?--------對(duì)一個(gè)二進(jìn)制按位取反
?? - - ?--------前置,后置- -
?? ++ ?--------前置,后置++
?? * ?--------解引用操作符
??&(取地址):
int a = 1;
int *pa = &a;//將變量a的地址保存在變量pa中,
//pa指向a,此時(shí)pa是一個(gè)指針變量
?? - -(前置,后置),++(前置,后置):
int a = 1;
int b = a++ // a = 2; b = 1 后置++:先使用,后++
int d = 2
int c = ++d// d = 3;c = 3 前置++:先++,后使用
??*(解引用):
5.2sizeof和數(shù)組??sizeof(求操作數(shù)類型長(zhǎng)度):
int a = 1;
printf("%d\n",sizeof(a));//result:4(字節(jié))
printf("%d\n",sizeof(int));//result:4(字節(jié))
printf("%d\n",sizeof a);//result:4(字節(jié))
printf("%d\n",sizeof int);//錯(cuò)誤:求類型的長(zhǎng)度不能去掉括號(hào)
sizeof:求變量(類型)所占空間的大小
符號(hào):>? >=?<= ? != ? ==
注意:1.編寫程序代碼時(shí)一定要注意 = 和== 的區(qū)別,不要寫錯(cuò),= 是賦值操作,而 == 才是判斷
??2.判斷字符串是否相同時(shí),應(yīng)該用strcmp()函數(shù),而不能用==比較
符號(hào):&&?||
??&& ------------邏輯與操作(只要有一個(gè)表達(dá)式為假便為假,不再執(zhí)行后面的表達(dá)式)
??| | ------------邏輯或操作(只要有一個(gè)表達(dá)式為真便為真,不再執(zhí)行后面的表達(dá)式)
區(qū)分邏輯與和按位與
區(qū)分邏輯或和按位或
1 && 2 = 1;//邏輯與,兩個(gè)全真結(jié)果才為真
1 & 2 = 0;//按位與(按二進(jìn)制計(jì)算)
1 || 2 = 1;//邏輯或,只要有一個(gè)為真便為真
1 | 2 = 3;//按位或(按二進(jìn)制計(jì)算)
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧