#三項演算子の詳細説明
一部の選択分岐構造では、代わりに単純な条件演算子を使用できます。例:
if(a<b)
min=a;
else
min=b;
ログイン後にコピー
次の条件演算子を使用して、「(a
を処理できます。 a
条件演算子は、「?」と「:」の 2 つの記号で構成され、操作対象が 3 つ必要なため、三項演算子とも呼ばれます。C 言語で唯一の三項演算子です。オペレーター。
その一般的な形式は次のとおりです:
次に、条件演算子に関するいくつかの手順を示します:
(1) 式 1 は関係式です。条件を記述するために使用される式または論理式。式 2 と式 3 には、定数、変数、または式を使用できます。例:
(x==y)?'Y':'N'
(d=b*b-4*a*c)>=0?sqrt(d):sqrt(-d)
ch=(ch>='A'&&ch<='Z')?(ch+32):ch
ログイン後にコピー
上記はすべて正当な条件式です。
関連する推奨事項: "
FAQ"
(2) 実行順序: 最初に式 1 を解決します。値が 0 以外の場合、条件を意味します。このとき、式 2 の値が条件式全体の値として使用されます;
式 1 の値が 0 の場合は、条件が false の場合は、式 3 を解きます。式 3 の値は、条件式全体の値です。例:
(a>=0)?a:-a 実行結果は a
(3) の絶対値になります。条件式 値は変数に直接代入されます。例:
min=(a
(4) 条件式の優先順位は代入演算子より高いだけですが、以前に見つかったすべての演算子よりは低くなります。
したがって、min=(a
(5) とは同等ではありません。条件演算子 バインド方向は「右から左」です。
(6) 条件式は入れ子にすることができます。つまり、条件式内の式 2 と式 3 を別の条件式にすることができます。例:
上記の条件式では、式の 3 番目の部分が別の条件式です。条件式の結合性によれば、上記の条件式は次と同等です。
x>0?1:(x<0?-1:0)
ログイン後にコピー
その機能は、x の符号を決定することです。 xが正の数の場合、条件式の値は1、xが負の数の場合、条件式の値は-1、xが0の場合、条件式の値は0となります。
(7) 条件式は、if ステートメントに埋め込まれたステートメントが代入ステートメントである (かつ、両方の分岐が同じ変数に値を代入する) 場合にのみ、if ステートメントを置き換えることができます。たとえば、
if(a%2==0)
printf("even/n");
else
printf("odd/n");
ログイン後にコピー
は
(a%2==0)?printf("even/n"):printf("odd/n");
ログイン後にコピー
のように記述することはできませんが、次のステートメントに置き換えることができます:
printf("%s/n",(a%2==0?"even":"odd");
ログイン後にコピー
このステートメントの機能は次のとおりです。が偶数の場合は偶数を出力し、a が奇数の場合は奇数を出力します。
(8) 式 1、式 2、および式 3 の種類は異なっていてもかまいません。このとき、条件式の値の型は、このうち上位の型となります。例:
main() {
char c1, ch;
ch = getchar();
c1 = ch <= 'Z' && ch >= 'A' ? ' @ ' : ch ;
putchar(c1);
}
ログイン後にコピー
このプログラムの機能は、キーボードから任意の文字を入力し、大文字であるかどうかを判断し、大文字の場合は @ を出力し、そうでない場合はそのまま do を出力します。 , プログラムの6行目がキーステートメントで、このステートメントは入力文字の判定、選択、置換を実現します。
実行処理は、まずこの文の代入番号の右側にある条件演算子で入力文字を判定して選択し、ch>='A'&&ch<='Z'がtrueの場合、 Explain ch は大文字の英字なので、この時点では @ を選択します。それ以外の場合は、引き続き元の文字 ch を選択し、選択した結果を元の変数 ch に代入します。
以上が三項演算子とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。