cで短い構文で記述できる場合は、その方法を教えてください。
if arraeck(a, n) ? printf("YES") printf("NO");
このようなもの?..一行で...正しい構文は何ですか?
サンプルコードの直接翻訳:
arraeck(a, n) ? printf("YES") : printf("NO");
またはさらに短い:
printf(arraeck(a, n) ? "YES" : "NO");
これは (三項)条件演算子?:
と呼ばれ、読みにくいため、常に最適なソリューションとは限りません。通常、2番目のコードサンプルのように、条件の結果が必要な場合にのみ使用します(演算子はここで"YES"
または"NO"
と評価されます)。
最初のサンプルでは、演算子は式として使用されていないため、明示的なif
を使用することをお勧めします(結局のところそれほど長くはありません)。
if (arraeck(a, n))
printf("YES");
else
printf("NO");
?:
はif
と同等ではありません。後者はステートメントですが、前者は式です。
できるよ:
arraeck(a, n) ? printf("YES") : printf("NO");
しかし、それは悪いスタイルです。
あなたもすることができます
str = arraeck(a, n) ? "YES" : "NO";
printf(arraeck(a, n) ? "YES" : "NO");
でも書けない
str = if (arraeck(a, n)) "YES"; else "NO";
printf(if (arraeck(a, n)) "YES"; else "NO");
if (cond) {
exp1;
} else {
exp2;
}
次のように書くことができます
cond ? exp1 : exp2;
この形式は、一般的に次のような条件付き代入に使用されます( ウィキペディアの?: エントリから):
variable = condition ? value_if_true : value_if_false
printf(arraeck(a,n) ? "YES" : "NO");