変数を連続的に繰り返し修正する例を見てみましょう(JavaとCの比較)
1011 ワード
まず、この式を分析します.
x+=expr //exprは式を表す
1. Javaの場合: xの値はexprを計算する前に抽出される.
2. Cの場合: xの値はexprを計算した後に抽出される.
例を見てみましょう.
すみません、以上のコードを実行した后、xとyの値はそれぞれいくらになりましたか?
分析してみましょう
Javaで:前に抽出されたため
1. まず一番右の式:x+=y
xを中間変数tempに抽出します. temp 1=x(このときtemp=2).x+=yを実行するとxは5になる.
2.次は中間式:y+=x
まずy,temp 2=yを抽出する.y+=xを実行するとy=temp 1+x=3+5となり、yは8となる.
3.最後に一番左のこの式に着きました:x+=y
ここで実際に実行されるのはx=temp 1+y=2+8(実際にJavaは中間変数メカニズムを用いている)
ここでC言語はx=x+y=5+8(C言語には中間変数機構がない)を実行する.
x+=expr //exprは式を表す
1. Javaの場合: xの値はexprを計算する前に抽出される.
2. Cの場合: xの値はexprを計算した後に抽出される.
例を見てみましょう.
int x=2;
int y=3;
x+=y+=x+=y;
すみません、以上のコードを実行した后、xとyの値はそれぞれいくらになりましたか?
Java : x 10;y 8。
C : x 13;y 8。
分析してみましょう
Javaで:前に抽出されたため
1. まず一番右の式:x+=y
xを中間変数tempに抽出します. temp 1=x(このときtemp=2).x+=yを実行するとxは5になる.
2.次は中間式:y+=x
まずy,temp 2=yを抽出する.y+=xを実行するとy=temp 1+x=3+5となり、yは8となる.
3.最後に一番左のこの式に着きました:x+=y
ここで実際に実行されるのはx=temp 1+y=2+8(実際にJavaは中間変数メカニズムを用いている)
ここでC言語はx=x+y=5+8(C言語には中間変数機構がない)を実行する.