web-dev-qa-db-ja.com

cの短い構文の場合

cで短い構文で記述できる場合は、その方法を教えてください。

   if arraeck(a, n) ?    printf("YES")    printf("NO");

このようなもの?..一行で...正しい構文は何ですか?

8
Blondy21

サンプルコードの直接翻訳:

 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");
21
Niklas B.

?: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");
6
Amadan
if (cond) {
    exp1;
} else {
    exp2;
}

次のように書くことができます

cond ? exp1 : exp2;

この形式は、一般的に次のような条件付き代入に使用されます( ウィキペディアの?: エントリから):

variable = condition ? value_if_true : value_if_false
4
taskinoor
printf(arraeck(a,n) ? "YES" : "NO");
2
Daniel Daranas