質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Q&A

解決済

3回答

1301閲覧

Javaのfor文におけるカウンタ変数の更新のインクリメントの前置、後置の違い

mato182

総合スコア2

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

1グッド

1クリップ

投稿2022/03/15 10:36

前提

Javaでfor文を勉強している際に、インクリメントの位置についてわからなかったので、質問させていただきます。

疑問点

for文の基本形は、(dataという配列を対象に)

java

1for(int i=0; i<data.length; i++){ 2処理文 3}

だと思うのですが、カウンタ変数の更新がインクリメントでなされていると思うのですが、これがなぜ前置ではなく、後置になるのかがわかりません。iの値を変化させるのだから、前置のほうが適切なのではないかと考えたのですが、違うのでしょうか。

回答よろしくお願いいたします。

Y.H.👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

これがなぜ前置ではなく、後置になるのかがわかりません。

Javaでの、インクリメントの前置と後置の違いは、この式自身の持つ値(たとえば、x = y++;のようにしたときに、xへ代入される値)に限られています。

forの3つ目の式のように、式の値を使わず「変数を1増やす」という副作用だけ使いたい場合には、i++++iの差はありません。

投稿2022/03/15 11:17

編集2022/03/15 11:25
maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2022/03/15 11:21

なお、C++ではインクリメントもオーバーロードできますので、プリミティブでない値に使った場合、前置と後置で動作が異なることがありえます(もっとも、C++の枠組みを使ったDSLを作るなどの領域に突っ込むのでない限り、整数型のインクリメントに準じた動作として実装すべきものです)。
mato182

2022/03/15 11:56

ありがとうございます!よくわかりました。
guest

0

ベストアンサー

その疑問は何年も前から議論されています。

これらの議論を知らない人(や書籍)はイディオムとして後置インクリメントを多用している傾向があるように思います。i = i + 1i += 1 に近い書き方なのが(++i ではなく) i++ であることから後置インクリメントがイディオム化してしまっている印象があります。

どちらもそれぞれの意見があるようですが、私は前置インクリメントを多用しています。

投稿2022/03/15 11:09

arcxor

総合スコア2859

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mato182

2022/03/15 11:57

回答ありがとうございます。 以前から議論されている内容なのですね。 勉強になりました。
hoshi-takanori

2022/03/15 23:21

それは C++ でインクリメント演算子をユーザー定義する場合の話で、Java とは関係ないと思います。
arcxor

2022/03/16 03:53

言語が違えば事情は変わりうるでしょうが、全く関係ないのでしょうか。Javaに限らずC++以外の言語でこの議論が全く関係ないと言い切れるのかどうかについて文献があれば教えていただけると助かります。
guest

0

どちらでも同じです。
好きな方にすればよろしい

投稿2022/03/15 10:58

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mato182

2022/03/15 11:57

回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問