我试图计算此为i=i*++i
因此i=56*57
这给了我3192,但我的计划说,该值为2162:运算符优先级
class Demo {
public static void main(String args[]) {
short i=056;
i*=++i;
System.out.println(i);
}
}
我试图计算此为i=i*++i
因此i=56*57
这给了我3192,但我的计划说,该值为2162:运算符优先级
class Demo {
public static void main(String args[]) {
short i=056;
i*=++i;
System.out.println(i);
}
}
的问题是乘法之前 - 它在这里:
short i=056;
这是一个八进制文字,十进制值为46.所以,你实际上得到46 * 47的结果,这确实是2162.
我会强烈建议你不要使用像i *= ++i
虽然代码。所有相关人员使用i *= i + 1
更简单。我还建议你不要使用八进制文字。
我也强烈建议不要使用八进制文字! – Gabe
@加贝:大约30秒前就做过了:) –
你对什么感兴趣?'i = i * ++ i'或'i * = ++ i'? –
从'056'中删除前导'0',然后你会注意到一些事情,并可能得到答案。 –