1、關系運算符及其優先級
在C++語言中有6種關系運算符:<,<=,>,>=,==,!=
在六個關系運算符中,<,<=,>,>=的優先級相同,==和!=的優先級相同,<,<=,>,>=的優先級高於==和!=的優先級。
關系運算符是雙目運算符,運算時從左向右結合。
關系運算符優先級低於算術運算符,高於賦值運算符
例如: c > a - b 等價於 c > (a - b)
c == a > b 等價於 c == (a > b)
c = b <= a 等價於 c =(b <= a)
2、關系表達式
關系表達式是用關系運算符將兩個表達式連接起來進行關系運算的式子。
關系表達式的一般形式為:
<表達式><關系運算符><表達式>
例如:
int a = 3,b = 2,c = 1,d,f; cout << (a > b) << endl; cout << ((a > b) == c) << endl; cout << (b + c < a) << endl; cout << (d = a > b) << endl; cout <<(f = a > b > c) << endl; cout <<('a' > 80) << enld;
3、條件運算符(三目運算符)
條件運算符是C++中唯一的一個三目運算符,它由兩個符號“?”和“:”組成。
條件表達式的一般形式為:
<表達式1>? <表達式2>:<表達式3>
注意:
條件運算符的優先級低於算術運算符和關系運算符
條件運算符也可以嵌套,而且結合方向是從右向左的。例如:
a >b ? a : c > d ? c : d 等價於:a > b ? a : (c > d ? c : d )
條件表達式相當於一條簡單的if—else語句。例如:
cout << (a > b ? a : b) << endl; 等價於 if (a > b) cout << a << endl; else cout << b << endl;
4、邏輯運算符及其優先級
C++語言中提供了三種邏輯運算符:
! 非運算
&& 與運算
|| 或運算
邏輯運算符的優先級及其結合方向
邏輯非“!”: 優先級2, 右結合性,單目運算符。
邏輯與“&& ”:優先級11,左結合性,雙目運算符。
邏輯或“|| ”: 優先級12,左結合性,雙目運算符。
1為真,0為假;
&&:兩個為真才為真;如果第一個為假,後面那個不執行【短路現象】;
||:一個為真就為真;如果第一個為真,後面那個不執行【短路現象】;
【!,++,--,-】> 【算術運算符】> 【關系運算符】> 【&&,|| 】> 【條件運算符】> 【賦值運算符】
a>b&& c>d 等價於 (a>b) && (c>d)
!b==c|| d
a+b>c && x+y
5、邏輯表達式
用邏輯運算符將表達式連接起來的式子就是邏輯表達式。
邏輯表達式的一般形式為:
<表達式><邏輯運算符><表達式>
int a = 1,b = 2; //邏輯計算時a,b非0為真 cout << !a << endl; cout << (a && b) << endl; cout << (a || b) << endl; cout << (!a || b) << endl; cout << (4 && 0 || 2) << endl; cout << ('a' &&'b') << endl; cout << (5 > 3 && 2&& 8 < 4 - !0) << endl;