在c語言中,操作符是非常重要的,也正是因為他的重要性,使得我們在程式設計時會出現很多的錯誤,導致一些bug出現。下面就介紹下各種不同操作符的含義,特點及其注意事項。1. 算術操作符: + - * / %
%實際作用就是返回餘數(必須為整數),很多時候我們取整數的每一位時就會用到%。
+ - * /則分別代表著「加減乘除」,但對於變數的型別要多加注意,他們可以作用於整數和浮點數。其中/操作符的兩個運算元為整數時,則進行整數除法;如果有其中乙個運算元為浮點數時,就會進行浮點數除法。2. 移位操作符 :>> <<
移位是在二進位制中進行移位。
左移操作符指最左邊的bit位被遺棄,從右邊補上0。而左移相當於乘法,每左移一位便在十進位制中乘2。
右移操作符與左移操作符同理,相當於除法,每右移一位則在十進位制中除2。而右移操作符包括兩種移位規則:邏輯移位與算術移位。邏輯移位:丟棄最右邊,最左邊用0補齊。
算術移位:丟棄最右邊,最左邊用原該值的符號位填充。
對於位移操作符,不可移動負數字,即「ret>> -1;」語句是錯誤的。3. 位操作符:& | ^
&稱為按位與,如果左右運算元的相對應的bit位進行比較。如果都為1,則結果為對應的bit位為1,否則為0。我們通過按位與可以判斷乙個數二進位制bit位中1的個數,就是將這個二進位制序列與1進行按位與操作,去求得最低位是否為1(如果是1,則按位與結果為1;如果不是1,按位與的結果為0),依次將每乙個bit位都進行比較。
^操作符就是進行按位異或操作(左右運算元對應bit位相同為0,相異為1),其中很關鍵的一點就是要注意到任何乙個數字與他自己異或都為0。
|操作符就是進行按位或操作(左右運算元對應bit位有乙個1為1,無1為0)按位或可以將二進位制序列中的0置為1,即將序列與要置1所對應為1的序列進行按位或操作。
注意事項:位操作符的運算元必須是整數。任何乙個數字與他自己異或都為0。4. 賦值操作符:=
賦值操作符是將右邊數值或表示式賦予左邊的變數名。
復合賦值符+= -= *= /= %= >>= <<= &= |= ^=5. 單目操作符:!- + & sizeof ~ - - ++ * (型別)與其他運算子一樣效果,只是更加簡潔,利於減少**量。
例如:
int x = 10; x = x + 5; x += 5;
//復合賦值
!邏輯反操作6. 關係操作符:> >= < <= != ==-負值
+正值
&取位址
sizeof求操作符的型別長度(位元組為單位)
~對乙個數二進位制按位取反
- -對整數運算元進行減1的操作
++對整數運算元進行加1的操作
* 間接訪問操作符(指標解引用操作)
(型別)強制型別轉換
通俗來講就是符號左右兩邊的大小關係比較,尤其需要注意將賦值操作符=與關係操作符==區分開來,由於數學方面的因素,容易產生習慣性的錯誤。7.邏輯操作符:&& ||
&&邏輯與,當兩個運算元都為真時,結果為真。其中乙個運算元為假,結果就為假。邏輯與有乙個特點是由左向右運算,如果左邊運算元為假,那麼直接判定結果為假,不計算右邊的運算元。
||邏輯或,兩個運算元中只要有乙個為真,那麼結果就為真。並且只有當兩個運算元都為假時,才會得到結果為假。同邏輯與相似的是,當邏輯或左邊的運算元為真時,也會直接判定結果為真,而不計算右邊的運算元。
值得注意的是,我們要將邏輯與和按位與,邏輯或和按位或區分開來。其中1 & 2的結果是0,1 && 2的結果是1,1 | 2的結果是3,1 || 2的結果為1。8.條件操作符:exp1 ?exp2 :exp3
條件操作符有三個表示式,所以他也是三元運算子。整個操作符的運算結果取決於exp1(表示式1)的運算結果。如果表示式1的值為真,則該操作符的結果為exp2(表示式2),如果表示式1的值為假,則該操作符的結果為exp3(表示式3)
c語言操作符 位操作符 移位操作符
1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...
操作符簡介
1,算數操作符 除了 之外 兩數必須為整數 其他操作符都可以用於整數和浮點數的操作 結果的符號與模前數一致 例子 printf d n 10 3 1 printf d n 10 3 1 printf d n 10 3 1 printf d n 10 3 1 2,移位操作符 左移操作符 左邊拋棄,右邊...
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...