dポイントプレゼントキャンペーン実施中!

テキストブックを読んでいます。(数学が大の苦手です)

複合代入演算子についてなのですが、テキスト解説には、

int y = 10;
int y += 15;
System.out.println("y="+y);

というプログラムがあるとします。この場合の実行結果の数字は「y=15」でした。
全く意味がわかりません。

int y = 10というのは[y=10」で、int y = 15 に当てはめると、
10+15=25ではないのですか?

どのように計算すれば「u=15」が出てくるのか知りたいです。

恥ずかしながら、宜しくお願いします。

「プログラミング【代入演算子】」の質問画像

A 回答 (4件)

>2行目の式に代入して、


>y=y+5
>10=10+5
>y=15-10
>Y=5
↑の「10=10+5」以降がなんとも。笑
「=」は「代入」なので
y = y + 5;
っていうのは
(新しい)yには(古い)yに5を足したものを代入しますよ。
ってことです。
「数学」の「=」(等号)とは別物です。
なんなら慣れるまでは
y ← y + 5;
ってな感じで矢印に置き換えると感覚としてはわかりやすいかも。
yに5を足した値をyに入れるよ。
って見えません?

最後にもう1度書きますが、
プログラムの代入演算子「=」は「代入」なので、
「=」の右側にある値を、「=」の左側の変数に「入れる(代入)」
ってことです。
数学の方程式などで使う「=」(等号)とはまったくの別物です。

この回答への補足

ちなみに、今の気持ちをプログラミング(勉強はじめて2日目)であらわすと、

public class arigatou{            
public static void main(String[] args){    
system.out.println(“本当に有難うございます!”);   

}
}

です。笑

補足日時:2011/11/10 22:41
    • good
    • 0
この回答へのお礼

なんとも言えない計算をしてしまい、大変失礼いたしました。
もう恥もなにもかき捨ててご質問させて頂きました。
なるほど、やはり超ビギナーとしては、上記のややこしい書き方よりも、
おとなしく「y←y+5;」のほうがよっぽどわかりやすいので、
こちらでしばらく勉強を進めてみます。
思ったよりも早くテキストに出てきてしまったので、正直非常に焦っております。

このたびはご丁寧に回答してくださり、本当に助かりました。
有難うございます!!

お礼日時:2011/11/10 22:40

ん?


y+=15;
じゃなくて
y+=5;
じゃん。
だったら「y=15」になるよ。

y+=15;
で考えるなら、「y=25」になるよ。

だからテキストの計算結果はあってるし、
質問者さんの質問部分も計算結果はあってる。
たぶん見間違えて勘違いしちゃって、焦ってハマっちゃった感じですかね。
ちょっとコーヒーでも飲んで気分転換してみては?

で、テキストで間違ってるのはNo.1さんの「同じ変数名を2度宣言してる」ってとこ。
    • good
    • 0
この回答へのお礼

待っ・・・待って!待ってください。

という事は、二行目は別の変数を使ったとして、

int y = 10;
y+= 5;
System.out,prinln("y="+y);

とすると、計算の理解としては、
まず、y=10で、
2行目の式に代入して、
y=y+5
10=10+5
y=15-10
Y=5

にはならないのですか?
そもそも私の理解が足りていないみたいです・・・
何度読み返しても理解ができません。

y = 5
y+= 5
の違いがそもそも理解できておらず、テキストをみると、この「+=」というのは
複合代入演算子で、「足して代入」となるようです。

ということは、y += 5を考えた場合、 y= y+5・・・
これってそもそも計算できるのでしょうか?

お礼日時:2011/11/10 21:23

コンパイルエラーになりますよ。



int y = 10;
y += 15;
System.out.println("y="+y);

を実行すると、質問者さんのご理解通り、「y=25」が出力されます。

どんなテキストか知りませんが、正誤表を探してみて、なければそんなテキストは返品してお金を返してもらいましょう。
    • good
    • 0
この回答へのお礼

ご回答有難うございます!
頑張って読み進めてはいたのですが、この部分でつまずき、20分ほど
「あーでもない、こーでもない」状態を繰り返しております。

写真を添付したのですが、やはり間違っておりますでしょうか?

お礼日時:2011/11/10 20:24

いいえ、


そもそも

int y = 10;
int y += 15;
System.out.println("y="+y);

これは2行目でコンパイルエラーになります。
同じ変数は2回宣言できません。

もし、このように書かれているのなら
その本の記述に問題があることになります。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
写真を添付させて頂きましたが、いかがでしょうか?

本の記述に間違いがあるのでしょうか?

お礼日時:2011/11/10 20:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!