这可能是在某个地方被问到但我找不到它。有人可以澄清为什么这段代码会编译并打印出1
?
long i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
答案 0 :(得分:42)
它被解析为:
long i = (byte)( +(char)( -(int)( +(long)(-1) ) ) );
所有+
和-
运算符都是一元+
或-
。
在这种情况下,1
被否定两次,因此它会打印为1
。
答案 1 :(得分:5)
因为'+'和' - '都是unary operators,并且演员正在处理那些一元的操作数。其余的是数学。
答案 2 :(得分:5)
一元运算符和转换:)
+1是合法的
(byte)+ 1将+1转换为一个字节。
偷偷摸摸!让我思考。