[英]+++x unexpected type required: variable found: value
这可能是一个愚蠢的问题,但我不知道为什么会这样。我写了下面的代码片段。
public class Test {
public static void main(String... str)
{
int y = 9;
int z = +++y; //unexpected type required:variable found:value
int w = +-+y; // Not Error
}}
为什么+ - + y有效,+ + +不是吗?
+++y
被解释为++
运算符,后跟+y
。
+y
与-y
一样有效,但++
运算符期望变量操作(它不能递增值), +y
被认为是一个值(执行了加法运算)。
+-+y
为0 + (0 - (0 + y))
,并且它没有增量或减量运算符,因此即使操作将整个表达式转换为值(而不是变量引用),它也具有没有效果。
在Java中,字符+++
表示++
,后跟+
,它们是两个不同的运算符。 另一方面,没有运算符+-
,所以字符+-+
表示+
,然后是-
,然后是+
。
如果你想玩这些运算符,还有~
,这是二进制的 。 您可以使用运算符+
, -
和~
构建任意链,只要它们不包含++
或--
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.