1.加減乘
c里的加減乘同我們實際生活功能相同,我們不做探究,看例子即可
2.除(/)
c語言里的除法實質上是求商操作(零向取整,即正數取不大于其本身的整數,負數取不小于它本身的整數,都想0靠攏),如-5/2=-2 , 5/2=2,不是四舍五入的取整
另外,同實際生活相同,0不能做除數,編譯器不會報錯,但計算結果有誤,如下圖第三次輸入,沒有結果輸出,程序強制結束。
注意:
在兩個整數的除法中,x/y后的結果實質上先經過/的零向取整處理,再進行賦值, 所以,即便用double(浮點型)接收也會產生精度丟失,如下
這里補充一下表達式的優先執行
表達式一定是優先計算的,如下圖: i == 10是一個表達式,執行邏輯運算,首先進行該表達式的運算,結果為真,即1,再執行printf的輸出,因此輸出為1
3.取余(%)
雙目操作符(即有兩個操作數 如3%5,3和5就是操作數),只能作用于整型,兩邊不可以出現double型,結果為余數
注意:
當有符號時,余數也會帶上負號(余數為0時還是0),與整數略有不同
4.移位操作符(>> <<)
因為計算機的一切數據都是以二進制形式存儲的,所以這里的移位移動的是二進制的位,
移位分為算術移位和邏輯移位,也有有符號型移位和無符號型移位之分,在這里我們只講無符號位的移位(即正數的移位)
注意
A:移位操作不附帶賦值操作 在表達式中不會傳值
B:移位操作符也只能作用于整型(浮點型的存儲方式不同,各位都有特定的含義,此處不深究)
C:二進制向右移位即*2,,向左移位即/2(正數)
5.位操作符(| . & ,^)
位操作符是用來對二進制形式進行操作的
'&' : 按位與 操作符 比較兩個數相對應的位數(比較的是補碼) 兩數均為1結果為1,否則為0
'|' : 按位或 操作符 比較兩個數相對應的位數(比較的是補碼) 兩數有1則為1,均為0則結果為0
'^' : 按位異或 操作符 比較兩個數相對應的位數(比較的是補碼) 相同為0,相異為1
A:n^n=0;
B: n^1=n; (n和x,y指三個不同的數)
C:n^x=y,n^y=x ― 可用于做基本的解密
6.邏輯操作符(&& . ||)
即生活中的且運算與或運算,是一種邏輯運算
如你想要找兩個人去搬桌子,叫甲和乙兩個人去抬桌子,那么只有甲來,或只有乙來,桌子都是抬不走的(&&-邏輯與,兩個條件都滿足才為真,否則為假)。
如果你想要和另一個人搬桌子,叫甲和乙來幫忙,只有有一個人來了,桌子就可以抬走。(||-邏輯或,只要有一個條件滿足,結果就為真,都不滿足時結果才為假)。
注意:短路運算
A:&&的短路求值:(a條件&&b條件)
&&是邏輯運算,取兩邊表達式的邏輯值進行運算,那么首先運算的是兩邊的表達式,其實是先運行左邊的表達式,再運行右邊的表達式,但既然有一個條件不滿足就為假,那么在a條件不滿足后就完全沒必要進行b條件的判斷了,因此b表達式就不會被執行,發生短路。
B:||的短路求值(a條件||b條件)
||也是邏輯運算,順序同&&相同,當a表達式為真時,就不必在執行b表達式了,此時b不被執行,被短路。
7.單目操作符
7.1正負號(+ -)
可以與操作數結合作為表達式
7.2sizeof()
單目操作符,不是函數,計算變量或類型的空間大小,計算變量時可以不加括號,但計算類型必須加括號
7.3按位取反(~)
即將所有二進制位都取反(0變成1,1變成0)
7.4邏輯反操作(!)
邏輯運算,對邏輯結果取反(真變成假,假變成真)
8.賦值操作符
‘ = ',注意賦值操作符的左邊必須是可變量,不能是常量。
9.復合操作符.等式左邊不是常量
補充:
十進制向二進制的快速轉換(將原數按照2的n次方分解)
2^n,1后面n個0
如83=64(2^6,1后面6個0)+16(2^4,1后面4個0)+2(2^1,1后面1個0)+1(2^0,1后面沒有0) ―― 1010010
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!
原文鏈接:https://blog.csdn.net/zlwy1314/article/details/121278688