一、算術操作符
+ - * / %
除了%操作符,其餘幾個操作符既適用於浮點型別又適用於整數型別。
當/操作符的兩個運算元都是整數時,它執行整數除法,在其他情況下執行浮點數除法。
%為取模操作符,它接受兩個整形運算元,把左運算元除以右運算元,但它返回的值是餘數而不是商。
二、移位操作符
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表示正...