# 算術運算
- 算術運算子包括加
+、減-、乘*、除/以及求餘數% - 算術運算子皆為二元運算子
- 運算子作用的對象稱為操作數,
%運算的兩個操作數必須是整數
- 乘法運算子是不能省略的,數學中寫的 需寫成
b*b - 4*a*c - 除法運算時,注意加上括號!!例如: 應寫為
x/2.0/a或x/(2.0*a),絕不是x/a*2.0
# 遞增遞減運算子
前置 ++ : ++i ,後置 ++ : i++
前置 -- : --i ,後置 -- : i--
- 為一元運算子
- 無論是前置或是後置,
++皆會使變數自身 + 1,--皆會使變數自身 - 1
int n = 5,m = 10; | |
n++; // 相當於 n = n + 1; | |
m--; // 相當於 m = m - 1; | |
System.out.println(n); // 結果為 6 | |
System.out.println(m); // 結果為 9 |
- 作為表達式的話,
前置運算子會先將變數 + 1/-1 後,再去做運算
後置運算子會先運算變數,之後再 + 1/-1
int n = 5,m = 10; | |
int a,b,c,d | |
a = n++; // a = 5 ,n = 6 | |
b = m--; // b = 10 ,m = 9 | |
n = 5,m = 10; | |
a = ++n; // a = 6 , n = 6 | |
b = --m; // b = 9 , m = 9 |
# 優先級
先乘除求餘,後加減,級別相同則由左至右算
1+2*32+3+46*2/3小括號能改變優先級
(1+2)*3小括號可以嵌套,越裡面的小括號,優先級越高。
((1+2)*3+(2+3)*2)*7後置
++--的優先級 > 前置++--的優先級前置
++--的優先級 > 乘除的優先級
建議時常用小括號,標明計算的優先順序,免得出問題
# 複合指定運算子
| 二元運算子 | 功能 | 範例 | 說明 |
|---|---|---|---|
| = | 簡單指定 | x = y | 令 x = y |
| += | 加法指定 | x += y | 令 x = x + y |
| -= | 減法指定 | x -= y | 令 x = x - y |
| *= | 乘法指定 | x *= y | 令 x = x * y |
| /= | 除法指定 | x /= y | 令 x = x /y |
| %= | 餘數指定 | x %= y | 令 x = x % y |
指定值 x=y 之後,變數 x 原來的值被覆蓋,而 y 值不變
善用可以使程式碼變得更精簡,不善使用則... 會很困擾
# 關係運算
比較運算:對數大小關係的判斷
# 關係運算子
| 二元運算子 | 功能 | 範例 | 說明 |
|---|---|---|---|
| > | 大於 | a>b | 若 a>b 則結果為真 |
| >= | 大於等於 | a>=b | 若 a≧b 則結果為真 |
| < | 小於 | a<b | 若 a<b 則結果為真 |
| <= | 小於等於 | a<=b | 若 a≦b 則結果為真 |
| == | 等於 | a==b | 若 a=b 則結果為真 |
| != | 不等於 | a!=b | 若 a≠b 則結果為真 |
# 關係表達式
將兩個關係表達式以關係運算子連結,構成關係表達式
回傳的結果為邏輯值: true 、 false
double a = 1.0,b = -4.0,c = 3.0; | |
b*b-4.0*a*c ==0 //false | |
b*b-4.0*a*c > 0 //true |
# 注意
- 在判斷兩個表達式的值是否相等的時候,一定要用兩個等號,不能只用一個
- 關係運算子不要連著用
int a = 3,b = 5,c = 7; | |
// 正確表示 | |
if(a < b && b < c) | |
cout<<"a < b < c"<<endl; | |
// 錯誤示範 | |
if(a < b < c) | |
cout<<"a < b < c"<<endl; |
# 邏輯運算
表達、判斷多個條件之間的關係,同時成立、之一成立或不成立。
# 邏輯運算子
| 符號 | 功能 | 範例 | 說明 |
|---|---|---|---|
| && | 邏輯 AND | a>2&&a<9 | 若 2<a<9 則結果為真 |
| || | 邏輯 OR | a<2 || a>9 | 若 a<2 或 a>9 則為真 |
| ! | 邏輯 NOT | !(a==1) | 若 a≠1 則結果為真 |
!為 一元運算子&&、||為二元運算子
# 表達式的值
邏輯值: true 、 false
- 運算
<條件式1> && <條件式2,兩個都為 true ➡️ true
| 條件式 1 | 條件式 2 | 結果 |
|---|---|---|
| false | false | false |
| false | true | false |
| true | false | false |
| true | true | true |
- 運算
<條件式1> || <條件式2,任一個為 true ➡️ true
| 條件式 1 | 條件式 2 | 結果 |
|---|---|---|
| false | false | false |
| false | true | true |
| true | false | true |
| true | true | true |
- 運算
!<條件>
| 條件 | 結果 |
|---|---|
| true | false |
| false | true |