C语言操作符(又称运算符)(1)
一、分類
算術操作符、移位操作符、位操作符、
賦值、單目操作符、關系操作符、
邏輯操作符、條件操作符、逗號操作符
二、算術操作符
+ - * / %
栗子:
三、移位操作符
<< >>1、<<:在左移位中,值的最左邊的幾位被丟棄,右邊多出來的幾個空位則由0補齊。
2、>>:在右移位中,值的最右邊的幾位被丟棄,左邊多出來的幾個空位有如下
兩種情況:
(1)邏輯移位:左邊移入的位由0填充。
(2)算術移位:左邊移入的位由原來符號位決定,若為1,則全部填充1,若為0,則全部填充0。
具體采取上述哪種情況,由編譯器決定。
栗子:
結果如下:
解釋:
(1)補碼計算過程:
-123:1111 1011 -> 1000 0100 -> 1000 0101。
123:0111 1011 -> 0111 1011 -> 0111 1011
(2)右移三位,兩種結果,如下:
-123:
A、邏輯移位:0001 0000。
B、算術移位:1111 0000。
123:
A、邏輯移位:0000 1111。
B、算術移位:0000 1111。
(3)上述結果在計算機中都是補碼,那么其原碼對應的十進制是什么呢?計算如下:
-123:
A、0001 0000 -> 0001 0000 -> 0001 0000 -> 16。
B、1111 0000 -> 1110 1111 -> 1001 0000 -> -16。
123:
A、0000 1111 -> 0000 1111 -> 0000 1111 -> 15。
B、0000 1111 -> 0000 1111 -> 0000 1111 -> 15。
答案揭曉:對于VS2010,數值右移,在左邊,是按照符號位進行填充的,即:算術移位。
四、位操作符
& -> AND | -> OR ^ -> XOR(異或,相同為0,不相同為1)五、賦值
= 結合性從右向左復合賦值符:+= -= <<= 等。
這里需要注意:
上述兩個表達式結果都是一樣的,但是更推薦后者,原因如下:
b*(a+3) = b*(a+3) + 10; b*(a+3) += 10;大家明白了吧,有上述栗子可知,復合賦值比普通賦值的優點如下:
(1)增強源碼的可讀性和易維護性。
(2)后者表達式b*(a+3)只計算1次,前者計算2次,提高代碼執行效率。
總結
以上是生活随笔為你收集整理的C语言操作符(又称运算符)(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bool,_Bool和BOOL的区别
- 下一篇: 点积和叉乘的区别