右代宫丶鼬 发表于 2013-03-22 22:53

【新手问题】关于运算符

public class class2 {
public static void main(String args[]){
    int h=4;
    h+=h-=h*h;
    System.out.println("-----h:"+h);
}
}
这里为什么在最终结果出来之前h参与中间运算的值始终是4,在做完h-=h*h这个后h的值不会变么?
这个问题在C语言里貌似是属于“未定义行为”,编译器会发出警告.java为什么不报错呢?

wlmouse 发表于 2013-03-25 09:16

实际工作中从来没写过这种古怪代码,也可能是你编译器报警等级设低了的缘故。而且Java的JVM目前基本上都是Oracle/Sun一系的,没有别的。IBM和原Bea的虚拟机实际工作中很难见到。至于用GCC来编译Java更属于蛋疼行为。所以对于这种问题可能就不像有无数编译器的C一样那么重视。
页: [1]
查看完整版本: 【新手问题】关于运算符