//第一個程式段
#include<stdio.h>
int main()
{
int a,b,c,k;
a=2;b=3;c=4;
k=(a<b)?((a<c)?a:c):((b<c)?b:c);
printf("%d,%d,%d,%d\n",a,b,c,k);
}//輸出結果2342
對于k=(a<b)?((a<c)?a:c):((b<c)?b:c);這個是嵌套,從右向左看條件運算子,
一個一個看,
對于(a<b)?((a<c)?a:c):((b<c)?b:c)
可以轉換為if-else陳述句
if(a<b)
if(a<c) k=a;
else k=c;
else if(b<c)
k=b;
else
k=c;
//第二個程式段
#include<stdio.h>
int main()
{
int a,b,c,k;
a=2;b=3;c=4,d=5;
k=a<b?c:d>b?a:b;//等價于k=a<b?c:(d>b?a:b);
printf("%d,%d,%d,%d\n",a,b,c,k);
}
//先算括號里的,輸出為k=4,a=2,b=3,c=4;
總結:條件運算子中的嵌套是一個條件運算在另一個條件運算中,
是一個條件運算子在其中的一個運算式中,一般不帶括號,
一般就是這倆種情形,遇到復雜的就要想到結合性是從右到左,
就是先算右邊的再算左邊的,有括號先算括號里的,
這時就不用管條件運算子了,因為,括號的優先級最高,
//
條件運算子的優先級高于賦值陳述句,
max=(a>b)?a:b;可改為max=a>b?a:b;
//
x=a<b?a:b;等價于下面的:
if(a<b)
x=a;
else
x=b;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/258826.html
標籤:其他
上一篇:第一篇接觸Java
