![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは。JAVA超初心者です。
Javaの本に
++x はxを使ったあとに1増やす
と書いてありましたが、イマイチ意味がわかりません。
「使う」とは??
int n = 0;
int m = 0;
m=n++;
System.out.println(m);
System.out.println(n);
これの実行結果は
0
1
になるらしく、
m==n==; の意味は
nの値(0)にmを代入した後nに1プラスする。
m=n++は m=n;,n=n=1;と書き換えられる。
とのことですが、どうもしっくり来ません。
nをmに代入するのなら、int m=0 が書いてある
意味がないような気がするし、
この実行結果に納得がいきません。私は
1
0
になると思うのですが・・・。
これ以上どう分かりやすく説明すればいいのか
わからないと思われるかもしれませんが、
もし思いついたら教えてください。
宜しくお願いします。
No.4ベストアンサー
- 回答日時:
結構、ややこしい部分を含んでいますので、皆さんの回答と重複するかも知れませんがお許しを。
まず、n++; と ++n; は どちらも n=n+1; の意味です。
ところが、m=n++; と m=++n; は全く違う意味を持ちます。
違いはnのカウントアップと、代入の順序が入れ変わると言う事です。
2文に書き換えできるかどうかと言う議論がありましたが、次のように書き換え可能です。
m=n++; m=++n;
--------------
m=n; n=n+1;
n=n+1; m=n;
n=0,m=0でスタートした場合、実行後は、
左がm=0,n=1 になり、 右はm=1,n=1 になります。
次に、for文の議論がありました。No.1のお答えの通りですが少し補足します。
for(i=0;i<10;i++;){
処理
・
処理
}
は次のように書き換えたのと同じです。
for(i=0;i<10;;){
処理
・
処理
i++
}
逆に
for(i=0;i<10;++i;){
処理
・
処理
}
ならば、
for(i=0;i<10;;){
++i;
処理
・
処理
}
となります。つまり「実行」とは「代入」という1つの命令であったり、{}で囲まれた複数の命令文で有ったりするのです。カウントアップがその命令群の前か後かと言う違いを++nとn++で区別しているのです。
No.7
- 回答日時:
>nをmに代入するのなら、int m=0 が書いてある
>意味がないような気がするし、
たしかに、パッと見は意味はないように思えますが、
変数の初期化をうながしているのではないでしょうか?
私もたいした勉強をしているわけではないのでなんともいえませんが、初期化をしておかないと、コンパイル時に「○○は初期化されていない可能性があります」というエラーが出るときがあります。
なんにせよ、初期化する癖はつけておいた方が今後のためにも良いかと思います。
No.6
- 回答日時:
>nをmに代入するのなら、int m=0 が書いてある
>意味がないような気がするし、
これは大正解です。この場合、mにあらかじめ0を代入するのは意味がありません。
No.5
- 回答日時:
#include <stdio.h>
main(){
int i;
for(i=0;i<5;i++){
printf("%d\n",i);
}
for(i=0;i<5;++i){
printf("%d\n",i);
}
}
というプログラムをlsicというCコンパイラーでコンパイルし、実行したところ、
0
1
2
3
4
0
1
2
3
4
という結果になりました。つまり、どちらもループの中身を実行した後にiの加算の演算が行なわれています。
No.3
- 回答日時:
> m==n==; の意味は
> nの値(0)にmを代入した後nに1プラスする。
> m=n++は m=n;,n=n=1;と書き換えられる。
このあたり、タイプミスがあるような気がします。
コンピューター言語の場合、1文字の違いが大きな違いになることが多いので、修正結果を補足してください。
確認の画面でよく確認するようにしましょう。
No.2
- 回答日時:
こんちゃ sohです
>++x はxを使ったあとに1増やす
>
ちゃいますな。
x++
だったらxを使った後1増やすですけど
++xは
xを使う前に1増やすです
貴方の書いたプログラムでも++は
ちゃんと後ろについてますよ。
++
ってのは
x = x+1;
の意です。
この x=x+1;を先に処理するか後に処理するかに
焦点を当てた説明文なんだと思いますよ、それ。
>「使う」とは??
>
その行の処理で ++ の付いた変数の使用
の意ですかね
例えば
m=n++;
が
m 0
n 1
になる理由ってのは
m=n;を処理した後
n++; が処理されるから
m 0
n 1
になるって事を言ってるんです。
>m=n++は m=n;,n=n=1;と書き換えられる。
>
そんな風には書き換えられません(^^;
書き換えられるとしたら
int n=0;
int m=n
n=n+1;
でしょうね。
n++ ってのは書き換えると n=n+1 の意味です。
>この実行結果に納得がいきません。私は
>1
>0
>になると思うのですが・・・。
>
え~っと、なにゆえ nが0になるんでしょうか?
1
1
になるんだったら話しはわかるんですけど
1
0
になる理由はどこにも無いですよん。
あぁ、そうか
++って書いた処理を
m=n+1;
だと思ってませんか?
そうじゃなくて
m=n;
n=n+1;
です
むぅ、まだ分かりにくい説明だなぁ、、、ごめんなり。
No.1
- 回答日時:
for文なんかが、良い例ではないでしょうか?
テキスト等でfor文を確認してみてください。
例えば・・・・
for(int i=0; i<10; i++){
System.out.println(i);
}
みたいなのがあったとします。
ここで何をやっているかというと・・・
「 i を出力してから i の値を1増やす」
ということをやっていますね^^。まさしくiを使ってからiを増やしているのです。
なんとなくイメージはつかめたでしょうか?
n==m==;というものは私もはじめて見ましたので他の方におまかせいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# 3×3のラテン方陣をつくるプログラムを作成したのですが、(↓) #include <stdio.h> 5 2023/07/10 01:53
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- WordPress(ワードプレス) wordpressでphpを読み込みたい 1 2022/10/30 23:40
- 英語 過去から見た未来を表す would 1 2023/01/14 17:09
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- 英語 home where you've rented one out for a week? 4 2022/08/06 09:13
- 英語 Whether they agree or not,I will carry out the pla 3 2023/07/14 16:50
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tryの終了
-
FocusLostでイベント処理を中断...
-
JSP、サーブレットの初期処理
-
アコーディオンメニューをアン...
-
イベントとリスナーに関すること
-
ProgressBarが0%から動きません
-
PHPでDB処理中にプログレスバー...
-
Threadについて
-
[Java] while(true)の意味
-
演算子について
-
Javaアプリケーション実行の返...
-
SwingUtilities.invokeLater(ne...
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
インスタンス参照でアクセスで...
-
変数名の付け方
-
EXCEL VBAにて動的にCheckBOXを...
-
private static という変数の修飾
-
【sendkeysメソッドが動かずに...
-
変数の参照でエラーが出てしま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
doGetとdoPostの違い
-
JavaScriptからJAVAクラスを呼...
-
Javaでのデバッグコード削除
-
WPF C#でF10のイベント取得方法...
-
数値の定数を付ける時
-
Tomcat高負荷時の設定について
-
Javaプログラムからポップアッ...
-
JavaでVBのDOEVENTSと同様の処...
-
JSP、サーブレットの初期処理
-
switch文の中に、throws new Ex...
-
ExcelVBA で文字列の特定の文字...
-
VBScriptでのWord印刷
-
ラジオボタンの選択判定
-
Javaアプリケーション実行の返...
-
C#で別スレッドの終了を知りたい
-
ftp 同時複数接続の負荷テスト...
-
ブラウザを閉じた後のサーバ側...
-
javaのプログラムが止まる
-
[Java] while(true)の意味
おすすめ情報