<分区>
最近我在研究JVM字节码。我在维基百科上找到了名为 FNEG
的操作码:use to negate a float
。到底有什么好处呢?我试图在普通 Java 代码中对变量进行否定,但 Eclipse 向我报告了错误,即否定运算符对于浮点类型的参数是未定义的。那它是做什么用的呢?我该如何使用它?
<分区>
最近我在研究JVM字节码。我在维基百科上找到了名为 FNEG
的操作码:use to negate a float
。到底有什么好处呢?我试图在普通 Java 代码中对变量进行否定,但 Eclipse 向我报告了错误,即否定运算符对于浮点类型的参数是未定义的。那它是做什么用的呢?我该如何使用它?
最佳答案
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。
关于java - JVM 字节码浮点否定 : not allowed but possible?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14673596/