C、C、Java、および C# におけるインクリメント前および後の演算子の動作
この質問では、インクリメント前および後のインクリメントの微妙なニュアンスについて説明します。 4 つの異なるプログラミング言語 (C、C、Java、および C#) の演算子。評価と副作用の変動により、予期しない結果が生じる可能性があります。
C および C
C および C では、式内の部分式の評価順序は指定されていません。 。これは、複数のインクリメント演算子を含むステートメントが期待どおりに動作しない可能性があることを意味します。さらに、シーケンス ポイント (セミコロンなど) を介さずに式内で同じオブジェクトを 2 回変更すると、未定義の動作が発生します。
Java と C#
対照的に、Java はC# では式を左から右に評価し、副作用がすぐにわかるようにします。この動作により、前増分演算子と後増分演算子を使用すると、より予測可能な結果が得られます。
例
次のコード スニペットを考えてみましょう。
int a = 2; int b = a++ + a++; int c = ++a + a++ + a++;
出力各言語でのこのコードの内容は次のとおりです。
C | C | Java | C# |
---|---|---|---|
7 | 7 | 7 | 7 |
4 | 4 | 5 | 5 |
15 | 15 | 16 | 16 |
この違いは、言語の評価戦略に起因します。 Java と C# では、左から右への評価により一貫した副作用が保証されますが、C/C では未定義の動作が予測不可能な結果につながる可能性があります。
以上がC、C、Java、および C# では、インクリメント演算子の前後の動作はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。