C/C++三目運算符


三目運算符,又稱條件運算符,是計算機語言(C,C++,Java等)的重要組成部分。它是唯一有3個操作數的運算符,所以有時又稱為三元運算符。一般來說,三目運算符的結合性是右結合的。

對於條件表達式b ? x : y,先計算條件b,然后進行判斷。如果b的值為true,計算x的值,運算結果為x的值;否則,計算y的值,運算結果為y的值。一個條件表達式絕不會既計算x,又計算y。條件運算符是右結合的,也就是說,從右向左分組計算。例如,a ? b : c ? d : e將按a ? b : (c ? d : e)執行。
<表達式1> ? <表達式2> : <表達式3>; "?"運算符的含義是:先求表達式1的值,如果為真,則執行表達式2,並返回表達式2的結果;如果表達式1的值為假,則執行表達式3,並返回表達式3的結果。
可以理解為條件 ? 結果1 : 結果2 里面的?號是格式要求。也可以理解為條件是否成立,條件成立為結果1,否則為結果2。
注意:在C語言中,結果1 和 結果2的類型必須一致。
eg:
1
2
3
4
int a = 2;
int c = 3;
int b = (a > c) ? a : c;
cout << "b:" << b << endl;
這樣輸出的結果是:b:3
eg:
1
2
3
int a = 1, b = 2, z, c = 3;
z = a > b ? a : (b > c ? b : c);
cout << "z:" << z << endl;
這樣輸出的結果是:z:3
eg:
1
2
3
int a = 1, b = 2, z;
z = a > b ? a : b;  //去了括號
cout << "z:" << z << endl;
這樣的輸出的結果是:z:2
 
一般來說,三目運算符的結合性是右結合的,但是這點在ANSI C中並沒有明確規定,所以它的執行順序有時是由編譯器決定的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM