logo

C の条件演算子

条件演算子は、 三項演算子 。条件ステートメントは、式の出力に依存する意思決定ステートメントです。 2 つの記号、つまり「?」で表されます。そして ':'。

条件演算子は 3 つのオペランドに作用するため、三項演算子とも呼ばれます。

条件演算子の動作は ' と似ています。 if-else 「if-else」ステートメントとしてのステートメントも意思決定ステートメントです。

条件演算子の構文

 Expression1? expression2: expression3; 

上記の構文を図で表したものを以下に示します。

C の条件演算子

上記の構文の意味。

  • 上記の構文では、expression1 は true または false 値のいずれかのブール条件です。
  • 式 1 の結果が true の場合、式 2 が実行されます。
  • 式 2 は、ゼロ以外の値を返す場合にのみ true であると言われます。
  • 式 1 が false 値を返した場合、式 3 が実行されます。
  • 式 3 は、値 0 を返す場合にのみ false であると言われます。

例を通して三項演算子または条件演算子を理解しましょう。

 #include int main() { int age; // variable declaration printf('Enter your age'); scanf('%d',&age); // taking user input for age variable (age>=18)? (printf('eligible for voting')) : (printf('not eligible for voting')); // conditional operator return 0; } 

上記のコードでは、入力をユーザーの「年齢」として取得しています。入力を取得した後、条件演算子を使用して条件を適用しました。この状態でご利用者の年齢確認を行っております。ユーザーの年齢が 18 歳以上の場合は、statement1 が実行されます (printf('eligible for vote'))。それ以外の場合は、statement2 が実行されます、つまり (printf('notqualified for vote')) )。

上記のプログラムの出力を観察してみましょう。

18 歳未満のユーザーの年齢を指定すると、出力は次のようになります。

C の条件演算子

18 歳以上のユーザーの年齢を指定すると、出力は次のようになります。

C の条件演算子

上記の 2 つの出力からわかるように、条件が true の場合、statement1 が実行されます。それ以外の場合は、statement2 が実行されます。

これまで、条件演算子がどのように条件をチェックし、条件に基づいてステートメントを実行するかを観察してきました。ここで、条件演算子を使用して値を変数に割り当てる方法を見てみましょう。

エフムービーズ

例を通してこのシナリオを理解しましょう。

 #include int main() { int a=5,b; // variable declaration b=((a==5)?(3):(2)); // conditional operator printf('The value of 'b' variable is : %d',b); return 0; } 

上記のコードでは、「a」と「b」という 2 つの変数を宣言し、「a」変数に 5 の値を代入しています。宣言の後、条件演算子を使用して変数「b」に値を割り当てます。 「a」の値が 5 に等しい場合、「b」には 3 の値が割り当てられ、そうでない場合は 2 が割り当てられます。

出力

C の条件演算子

上記の出力は、「a」変数の値が 5 に等しいため、「b」変数の値が 3 であることを示しています。

ご存知のとおり、条件演算子と「if-else」の動作は似ていますが、いくつかの違いがあります。それらの違いを見てみましょう。

  • 条件演算子は単一のプログラミング ステートメントですが、「if-else」ステートメントは括弧内にステートメントが入るプログラミング ブロックです。
  • 条件演算子は変数に値を代入するために使用することもできますが、「if-else」ステートメントは代入目的には使用できません。
  • ステートメントが複数ある場合、ステートメントを実行するのには役に立ちませんが、複数のステートメントを実行する場合は、「if-else」ステートメントの方が適していることがわかります。
  • ネストされた三項演算子はより複雑で、簡単にデバッグできませんが、ネストされた 'if-else' ステートメントは読みやすく保守しやすいです。