C語言操作符簡介

2021-09-23 14:50:22 字數 3556 閱讀 4349

在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. 賦值操作符:=

賦值操作符是將右邊數值或表示式賦予左邊的變數名。

復合賦值符+= -= *= /= %= >>= <<= &= |= ^=

與其他運算子一樣效果,只是更加簡潔,利於減少**量。

例如:int x = 10; x = x + 5; x += 5;//復合賦值

5. 單目操作符:!- + & sizeof ~ - - ++ * (型別)

!邏輯反操作

-負值

+正值

&取位址

sizeof求操作符的型別長度(位元組為單位)

~對乙個數二進位制按位取反

- -對整數運算元進行減1的操作

++對整數運算元進行加1的操作

* 間接訪問操作符(指標解引用操作)

(型別)強制型別轉換

6. 關係操作符:> >= < <= != ==

通俗來講就是符號左右兩邊的大小關係比較,尤其需要注意將賦值操作符=與關係操作符==區分開來,由於數學方面的因素,容易產生習慣性的錯誤。

7.邏輯操作符:&& ||

&&邏輯與,當兩個運算元都為時,結果為。其中乙個運算元為,結果就為。邏輯與有乙個特點是由左向右運算,如果左邊運算元為,那麼直接判定結果為,不計算右邊的運算元。

||邏輯或,兩個運算元中只要有乙個為,那麼結果就為。並且只有當兩個運算元都為時,才會得到結果為。同邏輯與相似的是,當邏輯或左邊的運算元為時,也會直接判定結果為,而不計算右邊的運算元。

值得注意的是,我們要將邏輯與和按位與,邏輯或和按位或區分開來。其中1 & 2的結果是01 && 2的結果是11 | 2的結果是31 || 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...