2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

三項演算子の優先順位

Posted at

三項演算子の使い方でミスしたので記録しておきます.

三項演算子とは

a ? b : c

とすると, aがTrueのときb,Falseのときcになる演算子です.
例えば

std::cout << (true ? 1 : 0) << std::endl;

とかでは1が出力されます.

優先順位

C++での三項演算子の優先順位はかなり低いです.
私はこんなミスをしました(本当は違いますがこんな感じのやつです).

int x = 100 - (a == 1) ? 1 : 0;

a=1のとき1を引いてくれることを期待したのですが結果はx=1となりました.
これは三項演算子の条件部が(a == 1)ではなく100-(a == 1)になっていたことが原因です.

この場合書き方として

int x = 100 - (a == 1 ? 1 : 0);

int x = 100 + (a == 1 ? -1 : 0);

の方がいいのかなと思いました.

まとめ

三項演算子は括弧でくくろう.

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?