條件運算子的巢狀問題

2021-10-19 08:54:25 字數 1569 閱讀 3400

//第乙個程式段

#include

intmain()

//輸出結果2342

對於k=

(a(a?a:c):(

(b?b:c)

;這個是巢狀。從右向左看條件運算子,

乙個乙個看。

對於(a(a?a:c):(

(b?b:c)

可以轉換為if

-else語句

if(aif(aelse k=c;

else

if(bk=b;

else

k=c;

//第二個程式段

#include

intmain()

//先算括號裡的,輸出為k=4,a=2,b=3,c=4;**

****

****

****

****

****

****

****

****

****

****

****

***k=a>b?

(b>c?1:

0):0

if((a>b)

&&(b>c)

) k=1;

//就是a>b執行()內的,之後(b>c)才可為1,否則為0也就是不滿足a>b,b>c就為0;

else k=0;

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

**k=a>b?

(b>c?1:

2):0

if(a>b)

if(b>c)

k=1;

else k=2;

else k=0;

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

總結:條件運算子中的巢狀是乙個條件運算在另乙個條件運算中,

是乙個條件運算子在其中的乙個表示式中,一般不帶括號。

一般就是這三種情形,遇到複雜的就要想到結合性是從右到左,

就是先算右邊的再算左邊的,有括號先算括號裡的,

這時就不用管條件運算子了,因為,括號的優先順序最高。

//條件運算子的優先順序高於賦值語句。

max=

(a>b)

?a:b;可改為max=a>b?a:b;

// x=aif

(ax=a;

else

x=b;

條件運算子巢狀

條件運算子 都知道就不細說了,最簡單也是最常用的例子 n a b a b 在c primer plus第六版180頁看到了乙個例子,如下所示 const char x 2 20 const char y quillstone for int i 0 i 3 i cout i 2 i x i y x ...

條件運算子

條件運算子 c提供條件表示式 conditional expression 作為表達if else語句的便捷方式,該表示式使用?條件運算子。該運算子分為兩個部分,需要三個運算物件。所以是三元運算子,也是c唯一的三元運算子 下面的 得到乙個數的絕對值 x y 0 y y 在 和 之間的內容就是條件表示...

條件運算子和逗號運算子

條件運算子 表示式1 表示式2 表示式3 運算規劃 如果表示式1為真,返回表示式2的結果,否則返回表示式3的結果 例如 a 1,b 2 a b a b 返回值為2 注意表示式是右結合的.例 a 1,b 2,c 3 a b a b?c b 相當於 a b a b?c b 返回值為3 逗號運算子 多個表...