这些天来,我正在尝试研究 JVM 字节码。FNEG
我在 wikipedia 上找到了名为 describe 的操作码: use to negate a float
. 到底有什么好处呢?我尝试在普通 Java 代码中对变量进行取反,Eclipse 向我报告错误,即对于浮点类型的参数未定义否定运算符。那么它是干什么用的呢?我该如何使用它?
问问题
207 次
1 回答
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。
于 2013-02-03T14:43:51.687 回答