C語言操作符總結

2021-08-13 21:10:27 字數 4061 閱讀 4077

一、算術操作符

+ - * / %

除了%操作符,其餘幾個操作符既適用於浮點型別又適用於整數型別。

當/操作符的兩個運算元都是整數時,它執行整數除法,在其他情況下執行浮點數除法。

%為取模操作符,它接受兩個整形運算元,把左運算元除以右運算元,但它返回的值是餘數而不是商。

二、移位操作符

1.移位操作符有:

<< 左移操作符

右移操作符

左移操作符

移位規則:

左邊拋棄、右邊不0

右移操作符

移位規則:

1.邏輯移位

左邊用0填充,右邊丟棄

2.算術移位

左邊:符號位用原值的符號位代替,其餘用0填充

右邊丟棄

左運算元的值將移動由右運算元指定的位數。兩個運算元都必須是整型型別。

警告:

對於移位運算子,不要移動負數字,這個是標準未定義的。

2.典型應用:

計數乙個值中值為1的個數。它接受乙個無符號引數(避免右移位的歧義),並使用%操作符判斷最右邊的一位是否非零。

/*

**這個函式返回引數值中值為1的個數

*/int count_one_bits(unsigned value)

三、位操作符

1.位操作符有:

& 按位與

| 按位或

^ 按位異或

注:他們的運算元必須是整數。

2.典型應用

(1).把指定的位設定為1。

```

value = value | 1 << bit_number;

```(2).把指定的位清0。

value = value & ~(1

<< bit_number);

(3).對指定的位進行測試,如果該位已被設定為1,則表示式結果為非零值。
value & 1

<< bit_number;

四、賦值操作符

1.賦值操作符:=

它用乙個等號表示,賦值是表示式的一種,而不是某種型別的語句。

2.復合賦值符

+= -= *= /= %=

<<= >>= &= ^= |=

以+=操作符為例,其餘操作符與它相似

+=操作符的用法如下:

a +=expression;
它讀作「把expression加到a」,它的功能相當於下面表示式:

a = a + expression;
了解到這兒,我們來改寫一下程式「計數乙個值中值為1的個數」,**如下:

value != 1

<< bit_number;

value &= ~(1

<< bit_number);

/***這個函式返回引數值中值為1的個數

*/int count_one_bits(unsigned value)

五、單目操作符

1.單目操作符有;

! 邏輯反操作—把真(非0)變成假(0),把假(0)變成真(1)

- 負值

+ 正值

& 取位址

sizeof 運算元型別的長度(以位元組為單位)

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

– 前置、後置–

++ 前置、後置++

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

(型別) 強制型別轉換

這裡著重說明一下sizeof操作符,sizeof操作符判斷它的運算元的型別長度,以位元組為單位表示。運算元既可以是個表示式(常量是單個變數),也可以是兩邊加括號的型別名。這裡有兩個例子:

sizeof ( int ) sizeof x

第1個表示式返回整形變數的位元組數,其結果取決於你所使用的環境。第2個表示式返回變數x所佔據的位元組數。注意,從定義上說,字元變數的長度為1個位元組。當sizeof的運算元是個陣列名時,它返回該陣列的長度,以位元組為單位。

六、關係操作符:

1.關係操作符有:

>=                 ==

< <= !=

注:(1). !=操作符用於測試「不相等」,==操作符用於測試「相等」;

(2).這些操作符產生的結果都是乙個整型值,而不是乙個布林值。

警告:

(1).c語言中用必須使用雙等於號==來比較相等性;

(2).陷阱:在測試相等性的地方出現賦值符是合法的,它不是乙個語法錯誤;

例如:

x = get_some_value();

if (x = 5)

expression;

我們來分析一下這個程式:x從函式獲得乙個值,但接下來我們把5賦給x,而不是把x與字面值5進行比較,從而丟失了從函式獲得的那個值。這個結果顯然不是我們想要的結果,但是,這裡還存在另外乙個問題,由於將5賦給x,所以x非零,從而if語句將始終為真。

七、邏輯操作符

1.邏輯操作符有;

&& 邏輯與

|| 邏輯或

注:這兩個操作符看上去有點像位操作符,但它們的具體操作卻大相徑庭——它們用於對表示式求值,測試它們的值是真還是假。

(1). && 操作符

expression1 && expression2;
如果expression1 和 expression2 的值都是真的,如果兩個表示式中任何乙個表示式為假,那麼整個表示式的值為假。

注:&&操作符的工作原理

&&操作符的左運算元總是首先進行求值,如果它的值是真的,然後緊接著對右運算元求值。如果左運算元的值為假,那麼右運算元便不再進行求值。

||操作符也具有相同特點

它先對左運算元求值,如果它的值是真,右運算元便便不再求值。

警告:

位操作符常常與邏輯操作符混淆,但他們是不可互換的。

他們之間的區別:

(1). && 和 || 操作符具有短路性質,如果表示式的值根據左運算元便可決定,他就不再對右運算元進行求值。與之相反,& 和 | 操作符兩邊的運算元都需要進行求值。

(2).邏輯操作符用於測試零值和非零值,而位操作符用於比較它們運算元中對應的位。

八、條件操作符

條件操作符接受三個運算元。

expression1 ? expression2 : expression3 ;
它等價於:

if (expression1)

else

九、逗號操作符

逗號操作符將兩個或多個表示式分隔開來。

expression1, expression2, ..., expressionn;
這些表示式自左向右逐個進行求值,整個逗號表示式的值就是最後那個表示式的值。

C語言操作符總結

c語言操作符總結 1.算數操作符 有浮點數則為浮點除法 全為整形 2.移位操作符 所有的移位操作符都是二進位制移位 左移 效果 左邊拋棄右邊補0.右移 效果 1 符號位 算術移位 原該值的符號位 2 0 邏輯移位 警告 不要移動負數字 3.位操作符 按位與 按位或 按位異或 注意 全都為二進位制位操...

C語言 操作符總結

1.運算操作符 加 可作為正號 例 a b 4 減 可作為正號 例 a b 5 乘 例 a b 除 例 a b 注意 分母不能為零 取餘 運算操作符的使用方法,基本與數學上的使用一致 2.賦值操作符 例 a 2 可讀為將2賦給a 注意 從右向左進行運算 3.其他符賦值操作符 例 a 1 相當於 a ...

C語言操作符總結

1.操作符的兩個運算元必須為整數,返回的是整除後的餘數。2.對於 操作符,如果兩個運算元都是整數則執行整數除法,只要有浮點數就執行浮點數除法。左移操作符 右移操作符 左邊拋棄,右邊補0 右移分為兩種 1.邏輯移位 左邊用0補,右邊丟棄 2.算術移位 左邊用原來的符號位填充,右邊丟棄 符號位中0表示正...