首先對於操作符如圖所示,
c語言運算子優先順序表(與上至下,優先順序依次遞減)
優先順序:
優先順序最高者其實不是真正意義上的運算子,包括:陣列下標、函式呼叫、操作符各成員選擇操作符。他們都是自左向右結合,因此a.b.c的含義是(a.b).c,而不是a.(b.c)。
單目運算子的優先順序僅次於前訴運算子。型別轉換也是單目運算子。
優先順序比單目運算子低的就是雙目運算子。在雙目運算子中,算術運算子的優先順序最高,移位運算子次之,關係運算子再次之,接著是邏輯運算子,賦值運算子,最後是條件運算子(三目運算子)。
我們需要注意的最重要的兩點是:
1.任何乙個邏輯運算子的優先順序低於任何乙個關係運算子
2.移位運算子的優先順序比算術運算子要低,但是比關係運算子要高
在所有的運算子中,逗號運算子的優先順序最低。
操作符的用法:
單目操作符:
! 邏輯反操作
- 負值
+ 正值
& 取位址
~ 對乙個數的二進位制按位取反
-- 前置、後置--
++ 前置、後置++
* 間接訪問操作符(解引用操作符)
(型別) 強制型別轉換
算術操作符:(+ - * / %)
1.除了%操作符(只適用於整數)之外,其他幾個操作符可以用作與整數與浮點數
2.對於/操作符如果兩個運算元都為整數,執行整數除法,而只要有浮點數執行的就是浮點數除法
3.%操作符的兩個運算元必須為整數。返回的是整除之後的餘數
移位操作符:(<>)
<
移位規則:左邊拋棄,右邊補0
>>(右移操作符)(一般是算術移位)
移位規則:
右移運算子分兩種:
1.邏輯移位
左邊用0填充,右邊丟棄
2.算術移位
左邊用原該值的符號位填充,右邊丟棄
警告!:
對於移位運算子,不要移動負數字,這個是標準未定義的
位操作符(& | ^)
& //按位與 (同為1才是1)
| //按位或 (有乙個1就是1)
^ //按位異或 (相同為0不同為1)
注:他們的操作必須為整數
關係操作符:(> >=
警告:在程式設計中==與=容易不小心寫錯
邏輯操作符:
&& 邏輯與
|| 邏輯或
條件操作符:
exp1 ? exp2 : exp3
用法:用條件操作符求最大值
#includeint main()
逗號表示式:
逗號表示式,從左向右依次執行。整個表示式的結果是最後乙個表示式的結果
用法:
#includeint mian()
c 類的操作符過載注意事項
一定要在operator 中檢查是否self assignment 物件的自我賦值 1.先清空現有的成員 釋放當前記憶體空間 2.傳遞拷貝進來的成員 3.return this 4.可以考慮是否加入轉移賦值class operator class friend ostream operator os...
c語言操作符 位操作符 移位操作符
1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...
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...