前置および後置インクリメント演算子: 言語間分析 (C、C、Java、C#)
この記事では、C、C、Java、C# におけるインクリメント前およびインクリメント後の演算子の動作の違いを調べます。 主な違いは、値の取得に対するインクリメント操作のタイミングにあります。
C と C :
C および C では、 a a
のような式の評価順序は未定義です。 シーケンス ポイントを使用せずに 1 つの式内で変数を複数回変更すると、予測できない結果が発生します。したがって、「a」、「b」、および「c」の最終値は、コンパイラとその最適化戦略によって異なる可能性があります。
Java と C#:
Java と C# は、左から右への評価と即時の副作用を保証します。これは、値が使用された直後にインクリメント操作が有効になることを意味します。 したがって:
b = a a ;
: 'a' は最初は 2 です。最初の a
では、値 2 が使用され、その後、'a' は 3 に増加します。2 番目の a
では、値3 が使用され、「a」は 4 に増加します。したがって、b
は 2 3 = 5
になり、「a」は次のようになります。 4.
c = a a a ;
: 'a' は 4 から始まります。 a
事前インクリメントにより、加算の 前 に 'a' が 5 に増加します。次の a
は値 5 を使用し、'a' を 6 に増分します。最後の a
は 6 を使用し、'a' を 7 に増分します。 したがって、c
は 5 5 6 = 16
に等しく、'a' は 7 です。
Java と C# の評価順序の明確な定義により、C や C で見られる未定義の動作とは異なり、予測可能で一貫した結果が得られます。
以上がC、C、Java、および C# では、前置増分演算子と後置増分演算子はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。