下面的代码编译并给出1
输出,这对我来说有点困惑.我试过javap
这个,但从那里我也想不出来.我已经检查了类似的帖子,但在这里找不到类似的问题.
看看代码:
int i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
这是字节码
Compiled from "Test.java"
public class Test {
public Test();
public static void main(java.lang.String[]);
}
Run Code Online (Sandbox Code Playgroud)
这些类型如何在这里工作?它是否依赖于数据类型的大小?代码如何工作?
Hen*_*nry 18
这只是一系列的一元+和 - 操作与类型转换混合在一起.
你从-1开始,把它转换为long,unary plus什么都不做,把它转换成int,unary减去(值现在是+1),强制转换为char,unary +,强制转换为byte.
你可以读作
int i = + - + - 1;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
或者如果你愿意的话
int i = - - 1;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
或者如果你愿意的话
int i = -1 * - 1;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
其他演员没有效果.
归档时间: |
|
查看次数: |
592 次 |
最近记录: |