JAVAとC演算賦値の違い

1675 ワード

main(){
int a = 10;
printf("%d",a+=a-=a*a);
}

結果:-180
JAVAのバージョン:
public static void main(String[] args) {
int a = 10;
System.out.printf("%d",a+=a-=a*a);
}

結果:-80
したがって、演算時にCの変数は演算式では変数値の変化に従って変化するが、JAVAではaを演算式に入れると固定賦値に等しく、"="に遭遇しない限り再賦値する.そうでなければ、元の値を維持します.
これに基づいてこれを実験してみました.
public static void main(String[] args) {
int a = 10;
int b = 20;
a = (a+b) - (b=a);
System.out.printf("%d %d",a,b);
a = 20 , b = 10
}

public static void main(String[] args) {
Integer a = new Integer(10);
Integer b = new Integer(20);
a = (a+b) - (b=a);
System.out.printf("%d %d",a,b);
a = 20 , b = 10
}

基本データ型だけでなく、基本データに対する参照データ型も適用されます.