運算式是由運算子(operand)與運算子(operator)組成的,例如下面的sum
與i
為運算元,+
與=
為運算子。
sum = sum + i;
包含 +
(正號) 、-
(負號) 、++
、--
、=
包含 算術運算子 、位元運算子等等
僅有 條件運算子?
一種
分類 | 運算子 | 功能 |
---|---|---|
指定運算子 | = |
將右值指定至左側變數 |
算數運算子 | + - * / |
即為數學上的運算符號 |
算數運算子 | % |
取餘數 |
位元運算子 | >> << & | ~ ^ |
做位元運算使用 |
複合指定運算子 | += -= *= /= %= |
|
遞增/遞減運算子 | ++ -- |
|
關係運算子 | == != > < >= <= |
比較兩變數關係使用 |
邏輯運算子 | && || ! |
且、或、非 等邏輯判斷 |
條件運算子 | ? |
|
逗號運算子 | , |
分隔敘述使用 |
資料大小運算子 | sizeof |
取得資料大小 |
位址運算子 | & |
取址使用 |
複合指定運算子 | 一般運算子 |
---|---|
i += j |
i = i + j |
i -= j |
i = i - j |
i *= j |
i = i * j |
i /= j |
i = i / j |
i %= j |
i = i % j |
i >>= j |
i = i >> j |
i <<= j |
i = i << j |
i ^= j |
i = i ^ j |
i &= j |
i = i & j |
i |= j |
i = i | j |
遞增運算子 a++
即為 a += 1
的簡寫。
遞減運算子 a--
即為 a -= 1
的簡寫。
這兩種運算子皆有前置 ++a
及後置 a++
的寫法,
前置與後置的區別在遞增(減)相較於其他行為的順序,
以下列程式碼為例:
輸出為:
條件式泛指所有可以傳出 true
或 false
結果的運算式,
例如 a > b
、a == b
等等。
除了可以用a > b
外,也可以結合邏輯運算子&&
||
!
等,
例如:a > b && b <= 10
、a != b
等等。
而在C++中,所有非 0
的值皆是 true
,0
代表 false
。
因此,變數、a % 2
等等也可以作為運算式。
詳細用法請參閱 選擇結構篇 。
用法: 邏輯條件式 ? 是true的值 : 是false的值
例子:
給值
結果: 10
輸出
輸入: 5 10
輸出: b比較大
這一個例子的邏輯有小問題,可以思考看看問題出現在哪裡,也可以嘗試去解決。
判斷奇偶數
比較帥的寫法:
輸入: 5 10
輸出:
強制轉型是利用()
運算子來強制轉換變數的型態。
用法: (型態) 變數
或 型態 (變數)
下方給一個簡單的例子:
上述程式碼因為a
b
皆為整數型別,但相除時,若不強制轉換成浮點數,編譯器會認為運算結果也會是整數,所以需要在變數前強制轉型,才會正確顯示出1.5
。
除了上述的強制轉型外,也可以把數字強制轉型為字元,字元部分會依照ASCII編碼轉換。