アンケート一覧ページでアンケートを探す

回答受付が終了しました

ID非公開

2022/8/21 1:21

33回答

プログラミングについて インクリメントの前置、後置の違いがよくわかりません サルでもわかるように解説お願いします 環境はC#です

プログラミング | Java86閲覧xmlns="http://www.w3.org/2000/svg">50

新機能 AI回答テストを実施中! テスト対象カテゴリ:歴史・悩み相談 ※回答がつかない場合は、画面のリロードをお試しください

回答(3件)

簡単に書きます。(この構文はC、C++、Java、Kotlinなどでも同様) 前置と後置で違いが出てくるのは下記のようなコードです。 ① a = ++b; ② a = b++; ①の動きは以下のようになります。 b = b + 1; a = b; ②の動きは以下のようになります。 a = b; b = b + 1; 従って、b = 3 の時、こうなります。 ① a = ++b; ⇒ a = 4, b = 4 ② a = b++; ⇒ a = 3, b = 4

NEW! この回答はいかがでしたか? リアクションしてみよう

先にインクリメントするか、後にインクリメントするかの違いです。 たとえば、a = 1の状態で、 b = a++ + 5; と b = ++a + 5; の違いを考えます。 a++は、aの値を利用した後でaをインクリメントします。 b = a++ + 5; だったら、 b = a + 5; a = a + 1; と同義です。 a = 1ですから、 b = a + 5 = 1 + 5 = 6 a = 1 + 1 = 2 となるので、a = 2、b = 6となります。 ++aは、aをインクリメントした後でaの値を利用します。 b = ++a + 5; であれば、 a = a + 1; b = a + 5; と同義です。 a = 1ですから、 a = 1 + 1 = 2 b = a + 5 = 2 + 5 = 7 となるので、a = 2、b = 7となります。 a++は後ろに++があるから、後でインクリメント。 ++aは前に++があるから、先にインクリメント。 それだけです。

前置・後置インクリメントを理解する為には、「式の値」というものを理解するのが肝心です。 C#において、a++ や ++a というのは「式」です。 「式」には「式の値」というものがあり、 これは変数の値とは個別に存在します。 例えば、a=100 が実行された後での、変数aの値は100になります。(これは問題ないですよね) 次に、a+5 と書いたとしても、別にaの値自体が変化する訳ではありません。 aの値は100のままです。 一方、 a+5 という式の値は、105 となります。 なので、 b = a+5 と書いた場合、bには式の値である、105が代入され、 bの値は105となり、 aの値は100のままとなります。 この様に、「変数の値」と「式の値」は個別の存在です。 ここまではOKでしょうか? さて、それでは、インクリメント演算子では何が起きるかというと、 ++a 前置インクリメントは、aの値を1増やすと同時に ++aという式の値もaを1増やしたものになります。 つまり、 a=a+1 x=a のような動きをします。 (xは式の値です) a=100; b = ++a; とした場合、 aの値は、a+1の101となり、 bの値は、++aという式の値として101となります。 a++ 後置インクリメントは、aの値を1増加させますが、式の値は増やしません。 つまり、 x=a a=a+1 のような動きをします。 (xは式の値です) a=100; b = a++; とした場合、 aの値は、a+1の101となり、 bの値は、a++という式の値として100となります。 前に、後にというよりは、式の値に対して、影響を与える、与えないで考えた方が分かりやすいかと思います。

ID非公開

質問者2022/8/21 1:56

簡単に言うと前置は変数を変えて1プラスした値を表す 後置は変数を変えずに1プラスした値を表す という事ですか?