web-dev-qa-db-ja.com

速記C ++ if elseステートメント

だから私はこれに短い手の声明があるかどうか興味があります:

_if(number < 0 )
  bigInt.sign = 0;
else
  bigInt.sign = 1;
_

If a <bなどについて、これらすべての略式文を見ることができます。

私はそれを適切に行う方法がわからないので、これに関する何らかの入力をお願いします。

ありがとう!

私は実際にあなたたちが答える直前にそれを理解しました。

私はbigInt.sign = (number < 0) ? 1 : 0を使用しています

16
kevorski

はい:

bigInt.sign = !(number < 0);

!演算子は常にtrueまたはfalseに評価されます。 intに変換すると、これらは1および0それぞれ。

もちろん、これは次と同等です:

bigInt.sign = (number >= 0);

ここでは括弧は冗長ですが、わかりやすくするために括弧を追加します。すべての比較演算子および関係演算子は、trueまたはfalseに評価されます。

16
M.M

三項演算子を使用するための基本的な構文は次のとおりです。

(condition) ? (if_true) : (if_false)

あなたの場合、これは次のようなものです:

number < 0 ? bigInt.sign = 0 : bigInt.sign = 1;
42
Bla...

これを試して:

bigInt.sign = number < 0 ? 0 : 1
20
user3360398

コードでこれを使用する頻度に応じて、次のことを検討できます。

マクロ

#define SIGN(x) ( (x) >= 0 )

インライン関数

inline int sign(int x)
{
    return x >= 0;
}

その後、あなたはただ行くだろう:

bigInt.sign = sign(number); 
1