10

技術面接で少し戸惑った質問がありました。

質問は次のとおりです。

もしも

int i = -1, int j = -1, and int k = -1, 

次の行を実行します。

++i && ++j && ++k

i、j、およびkの新しい値は何でしょうか?私が混乱した理由は、この式を何にも割り当てていないため、and演算子が違いを生むようには見えないためです(インクリメント演算子のみが必要です)。しかし、簡単なテストプログラムを実行すると、私が間違っていることがすぐにわかりました。私はこれまでこの演習を見たことがないので、誰かがこれを私に説明してもらえますか。

4

2 に答える 2

20

ここで重要なのは&&短絡です。

したがって、++i最初に評価されます。インクリメントiして新しい値、つまりを返す0ため、式の残りの部分は評価されません。

0, -1, -1私が間違っていなければ、値はそうあるべきです。

于 2012-10-19T19:02:27.130 に答える
2

この場合、式の値は++ifalse0であるため、および操作のショートカットと後者の式は評価されません。

于 2012-10-19T19:03:40.907 に答える