条件式の例

次の式では、値が大きい方の 変数が yz かを判別し、大きい方の値を変数 x に代入します。

x = (y > z) ? y : z;

次に等価なステートメントを示します。

if (y > z)
   x = y;
else
   x = z;

次の式では、関数 printf を呼び出し、c が数字に評価される場合に、 この関数が、変数 c の値を受け取ります。そうでない場合は 、printf は文字定数 'x' を受け取ります。

printf(" c = %c¥n", isdigit(c) ? c : 'x');

条件式の最後のオペランドに代入演算子が含まれる場合は、小括弧を使用して、式が正しい評価を 行うようにします。例えば、次の式では 、= 演算子には ?: 演算子より高い 優先順位が付けられます。

int i,j,k;
(i == 7) ? j ++ : k = j;

このコンパイラーは、次のように括弧で囲まれているように解釈されるので、エラーになります。

int i,j,k;
((i == 7) ? j ++ : k) = j;

つまり、k が代入式 k = j 全体としてではなく、 第 3 オペランドとして扱われます。

j の値を k に代入するのは、i == 7 が false のときで、 最後のオペランドを小括弧で囲みます。

int i,j,k;
(i == 7) ? j ++ : (k = j);

関連参照

IBM Copyright 2003