楼主,你可能代码是写错了。一楼说得没有错,看下面代码:
public class Test1 {
public static void main(String[] args) {
int x = 5;
x *= x + 5;
System.out.println(x);
}
}
输出结果为50
这主要是涉及到java运算符优先级的问题。楼主查看下运算符的运算优先级表就知道了
运算符优先级表
优先级 运算符 结合性
1 () [] . 从左到右
2 ! +(正) -(负) ~ ++ -- 从右向左
3 * / % 从左向右
4 +(加) -(减) 从左向右
5 << >> >>> 从左向右
6 < <= > >= instanceof 从左向右
7 == != 从左向右
8 &(按位与) 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= 从右向左
从上面优先级可看出加号运行符比*=运算符级别要高。要先执行加法运算,提醒楼主一点。运行符优先级没必要强记。如果不确定运算顺序,用些括号包起即可。好了。就这些了。希望能帮到楼主。
关于X你抄错题或者答案错了,不信自己运行一下;答案就是50
关于a ,题设的a*=12等价于a=a*12,所以是144
结果是50.
x*=x+5; 可以理解为 x = x * (x + 5);
x = x*(x+5) ;
x= 5*10 = 50;
int x=5;x*=x+5; x=50
int x=5;x+=x+5; x=15
int a=12;a*=12; a=144