詳解C語(yǔ)言之操作符
1.加減乘
c里的加減乘同我們實(shí)際生活功能相同,我們不做探究,看例子即可
2.除(/)
c語(yǔ)言里的除法實(shí)質(zhì)上是求商操作(零向取整,即正數(shù)取不大于其本身的整數(shù),負(fù)數(shù)取不小于它本身的整數(shù),都想0靠攏),如-5/2=-2 , 5/2=2,不是四舍五入的取整
另外,同實(shí)際生活相同,0不能做除數(shù),編譯器不會(huì)報(bào)錯(cuò),但計(jì)算結(jié)果有誤,如下圖第三次輸入,沒(méi)有結(jié)果輸出,程序強(qiáng)制結(jié)束。
注意:
在兩個(gè)整數(shù)的除法中,x/y后的結(jié)果實(shí)質(zhì)上先經(jīng)過(guò)/的零向取整處理,再進(jìn)行賦值, 所以,即便用double(浮點(diǎn)型)接收也會(huì)產(chǎn)生精度丟失,如下
這里補(bǔ)充一下表達(dá)式的優(yōu)先執(zhí)行
表達(dá)式一定是優(yōu)先計(jì)算的,如下圖: i == 10是一個(gè)表達(dá)式,執(zhí)行邏輯運(yùn)算,首先進(jìn)行該表達(dá)式的運(yùn)算,結(jié)果為真,即1,再執(zhí)行printf的輸出,因此輸出為1
3.取余(%)
雙目操作符(即有兩個(gè)操作數(shù) 如3%5,3和5就是操作數(shù)),只能作用于整型,兩邊不可以出現(xiàn)double型,結(jié)果為余數(shù)
注意:
當(dāng)有符號(hào)時(shí),余數(shù)也會(huì)帶上負(fù)號(hào)(余數(shù)為0時(shí)還是0),與整數(shù)略有不同
4.移位操作符(>> <<)
因?yàn)橛?jì)算機(jī)的一切數(shù)據(jù)都是以二進(jìn)制形式存儲(chǔ)的,所以這里的移位移動(dòng)的是二進(jìn)制的位,
移位分為算術(shù)移位和邏輯移位,也有有符號(hào)型移位和無(wú)符號(hào)型移位之分,在這里我們只講無(wú)符號(hào)位的移位(即正數(shù)的移位)
注意
A:移位操作不附帶賦值操作 在表達(dá)式中不會(huì)傳值
B:移位操作符也只能作用于整型(浮點(diǎn)型的存儲(chǔ)方式不同,各位都有特定的含義,此處不深究)
C:二進(jìn)制向右移位即*2,,向左移位即/2(正數(shù))
5.位操作符(| ,& ,^)
位操作符是用來(lái)對(duì)二進(jìn)制形式進(jìn)行操作的
'&'
: 按位與 操作符 比較兩個(gè)數(shù)相對(duì)應(yīng)的位數(shù)(比較的是補(bǔ)碼) 兩數(shù)均為1結(jié)果為1,否則為0
'|'
: 按位或 操作符 比較兩個(gè)數(shù)相對(duì)應(yīng)的位數(shù)(比較的是補(bǔ)碼) 兩數(shù)有1則為1,均為0則結(jié)果為0
'^'
: 按位異或 操作符 比較兩個(gè)數(shù)相對(duì)應(yīng)的位數(shù)(比較的是補(bǔ)碼) 相同為0,相異為1
A:n^n=0;
B: n^1=n;
(n和x,y指三個(gè)不同的數(shù))
C:n^x=y,n^y=
x — 可用于做基本的解密
6.邏輯操作符(&& , ||)
即生活中的且運(yùn)算與或運(yùn)算,是一種邏輯運(yùn)算
如你想要找兩個(gè)人去搬桌子,叫甲和乙兩個(gè)人去抬桌子,那么只有甲來(lái),或只有乙來(lái),桌子都是抬不走的(&&-邏輯與,兩個(gè)條件都滿足才為真,否則為假)。
如果你想要和另一個(gè)人搬桌子,叫甲和乙來(lái)幫忙,只有有一個(gè)人來(lái)了,桌子就可以抬走。(||-邏輯或,只要有一個(gè)條件滿足,結(jié)果就為真,都不滿足時(shí)結(jié)果才為假)。
注意:短路運(yùn)算
A:&&的短路求值:(a條件&&b條件)
&&是邏輯運(yùn)算,取兩邊表達(dá)式的邏輯值進(jìn)行運(yùn)算,那么首先運(yùn)算的是兩邊的表達(dá)式,其實(shí)是先運(yùn)行左邊的表達(dá)式,再運(yùn)行右邊的表達(dá)式,但既然有一個(gè)條件不滿足就為假,那么在a條件不滿足后就完全沒(méi)必要進(jìn)行b條件的判斷了,因此b表達(dá)式就不會(huì)被執(zhí)行,發(fā)生短路。
B:||的短路求值(a條件||b條件)
||也是邏輯運(yùn)算,順序同&&相同,當(dāng)a表達(dá)式為真時(shí),就不必在執(zhí)行b表達(dá)式了,此時(shí)b不被執(zhí)行,被短路。
7.單目操作符
7.1正負(fù)號(hào)(+ -)
可以與操作數(shù)結(jié)合作為表達(dá)式
7.2sizeof()
單目操作符,不是函數(shù),計(jì)算變量或類型的空間大小,計(jì)算變量時(shí)可以不加括號(hào),但計(jì)算類型必須加括號(hào)
7.3按位取反(~)
即將所有二進(jìn)制位都取反(0變成1,1變成0)
7.4邏輯反操作(!)
邏輯運(yùn)算,對(duì)邏輯結(jié)果取反(真變成假,假變成真)
8.賦值操作符
‘ = ',注意賦值操作符的左邊必須是可變量,不能是常量。
9.復(fù)合操作符.等式左邊不是常量
補(bǔ)充:
十進(jìn)制向二進(jìn)制的快速轉(zhuǎn)換(將原數(shù)按照2的n次方分解)
2^n,1后面n個(gè)0
如83=64(2^6,1后面6個(gè)0)+16(2^4,1后面4個(gè)0)+2(2^1,1后面1個(gè)0)+1(2^0,1后面沒(méi)有0) —— 1010010
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++開(kāi)發(fā)之CRC校驗(yàn)實(shí)例詳解
這篇文章主要介紹了C++開(kāi)發(fā)之CRC校驗(yàn)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07C語(yǔ)言中進(jìn)程信號(hào)集的相關(guān)操作函數(shù)詳解
這篇文章主要介紹了C語(yǔ)言中進(jìn)程信號(hào)集的相關(guān)操作函數(shù)詳解,包括sigismember函數(shù)和sigfillset函數(shù)以及sigemptyset函數(shù)的用法,需要的朋友可以參考下2015-09-09C++ OpenCV實(shí)現(xiàn)銀行卡號(hào)識(shí)別功能
這篇文章主要介紹了如何使用OpenCV C++實(shí)現(xiàn)銀行卡號(hào)識(shí)別功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)OpenCV有一定幫助,需要的可以參考一下2022-01-01C語(yǔ)言動(dòng)態(tài)內(nèi)存的分配最全面分析
動(dòng)態(tài)內(nèi)存是相對(duì)靜態(tài)內(nèi)存而言的。所謂動(dòng)態(tài)和靜態(tài)就是指內(nèi)存的分配方式。動(dòng)態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存,本文帶你深入探究C語(yǔ)言中動(dòng)態(tài)內(nèi)存的管理2022-08-08C語(yǔ)言實(shí)現(xiàn)冒泡排序的思路以及過(guò)程
冒泡排序是最簡(jiǎn)單的排序方法,理解起來(lái)容易。雖然它的計(jì)算步驟比較多,不是最快的,但它是最基本的,初學(xué)者一定要掌握。本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值2021-09-09C語(yǔ)言計(jì)算1/1+1/2+1/3+…+1/n的問(wèn)題
這篇文章主要介紹了C語(yǔ)言計(jì)算1/1+1/2+1/3+…+1/n的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11