I次のコード、C++ - 右シフトではない評価を正しく内部IF
if (index > ((v.size() >> 1) - 1)) { }
v.size()0で、インデックスは実行があればブロックに入らない1ですがあります。しかし、上記のコードを
int limit = (v.size() >> 1) - 1;
if (index > limit) { }
に変更し、同じ値のv.size()とindexを使用すると、実行はifブロックに入ります。
この現象はなぜ発生しますか?ありがとう。
おそらく 'v.size()'は 'int'ではないからです。しかし、関連するコンテキストがコードから抜けているため、その動作がわかりません。 – melpomene
ああ、無視された警告... –
これは暗黙の符号なしタイプへの変換によるものです。第2の方法は事実上鋳造である。素敵な質問:私はdownvoteを理解していない。 – Bathsheba