2013-02-03 54 views
1

在這些日子裏,我試圖研究一個JVM字節碼。我發現在維基百科上描述的名爲FNEG的操作碼:use to negate a float。到底有什麼好處呢?我試圖對普通Java代碼中的變量進行否定處理,並且Eclipse向我報告了否定運算符未定義爲float類型的參數的錯誤。那麼它是爲了什麼?我如何使用它?JVM字節碼浮點否定:不允許但可能嗎?

+4

咦? Java中肯定支持浮點數的否定。 –

+0

如何? Eclipse引發我沒有 – user35443

+2

*「我試圖在普通的Java代碼中對變量進行否定,Eclipse報告我錯誤,否定運算符未定義爲float類型的參數。」*嗯......它是:http:// pastie .org/6033481作品。我的猜測是,你只是有一個語法錯誤。如果你只是引用了一些代碼,那麼我們可以告訴你。 :-) –

回答

6
public class temp { 
    public static void main(String[] args) { 
     float a = 1.0f; 
     a = -a; 
     System.out.println(a); 
    } 
} 

javap -c temp給出:

Compiled from "temp.java" 
public class temp extends java.lang.Object{ 
public temp(); 
    Code: 
    0: aload_0 
    1: invokespecial #8; //Method java/lang/Object."<init>":()V 
    4: return 

public static void main(java.lang.String[]); 
    Code: 
    0: fconst_1 
    1: fstore_1 
    2: fload_1 
    3: fneg 
    4: fstore_1 
    5: getstatic  #16; //Field java/lang/System.out:Ljava/io/PrintStream; 
    8: fload_1 
    9: invokevirtual #22; //Method java/io/PrintStream.println:(F)V 
    12: return 

} 

見3:FNEG,標準的javac。

+0

哦。我正在使用不同的操作員。 – user35443

+0

@ user35443你試過'!'?事實上,邏輯補碼沒有爲float指定。 –

+0

@ user35443 +1在我能想到的任何語言中只有一個否定運算符'-' –

相關問題