C(プログラミング言語):++ aとa = a + 1の違いは何ですか?


答え 1:

違いはありません。 ++ a、a + = 1、およびa = a + 1は、定義上、まったく同じ式です(つまり、言語仕様ではこのように定義されています)。

3つの場合すべてで、式の結果は「a」に書き込む値のコピーです(もちろん、結果は「a」から読み取った値のコピーであるという点で異なります)

唯一の違いは、「a」が関数呼び出しなどのより複雑な式である場合、「a = a + 1」で2回呼び出されることと、割り当ての優先順位が++よりもはるかに低いことです。 ++の代わりに割り当てに追加の括弧が必要になる場合があります:++ a + ++ bは(a + = 1)+(b + = 1)または(a = a + 1)+(b = b + 1)よりも簡単に記述できます


答え 2:

++ aとa + 1は似ていますが、uが複数の変数を使用しているときに問題が発生します。

例:

int a = 10、b;

++ a =>値aを1つインクリメントします(o / p:a = 11)

a ++ =>値aを1インクリメントします(o / p:a = 11))

b = a ++ =>最初に値aをaに割り当て、次に0ne(o / p:a = 11、b = 10)ずつ増分します

b = ++ a =>最初の値aは1ずつ増加し、b(o / p:a = 11、b = 11)に割り当てられます


答え 3:

++ aとa + 1は似ていますが、uが複数の変数を使用しているときに問題が発生します。

例:

int a = 10、b;

++ a =>値aを1つインクリメントします(o / p:a = 11)

a ++ =>値aを1インクリメントします(o / p:a = 11))

b = a ++ =>最初に値aをaに割り当て、次に0ne(o / p:a = 11、b = 10)ずつ増分します

b = ++ a =>最初の値aは1ずつ増加し、b(o / p:a = 11、b = 11)に割り当てられます


答え 4:

++ aとa + 1は似ていますが、uが複数の変数を使用しているときに問題が発生します。

例:

int a = 10、b;

++ a =>値aを1つインクリメントします(o / p:a = 11)

a ++ =>値aを1インクリメントします(o / p:a = 11))

b = a ++ =>最初に値aをaに割り当て、次に0ne(o / p:a = 11、b = 10)ずつ増分します

b = ++ a =>最初の値aは1ずつ増加し、b(o / p:a = 11、b = 11)に割り当てられます


答え 5:

++ aとa + 1は似ていますが、uが複数の変数を使用しているときに問題が発生します。

例:

int a = 10、b;

++ a =>値aを1つインクリメントします(o / p:a = 11)

a ++ =>値aを1インクリメントします(o / p:a = 11))

b = a ++ =>最初に値aをaに割り当て、次に0ne(o / p:a = 11、b = 10)ずつ増分します

b = ++ a =>最初の値aは1ずつ増加し、b(o / p:a = 11、b = 11)に割り当てられます