为什么-1001不是有效的Java整数文字?

6
在Java中,-1001不被视为有效的整数字面量。为什么?

我投票将此问题关闭,因为它似乎是胡言乱语。 - Kayaman
实际上,如果我可以插一句的话,这位楼主触及到了一个常见的误解。点赞。 - Bathsheba
2个回答

10
在Java中,不存在负十进制字面量;请参见JLS§3.10.1
-1001是一个可在编译时求值的常量表达式,由对字面量1001进行一元取反得到。
(C和C++也适用此规则。)

1
但有趣的是,不是JavaScript - T.J. Crowder
2
准确地说:存在负文字面量-只是它们不使用“ -”书写,并且没有负十进制文字面量。引用JLS:“int类型的最负16进制[...]字面值,每个字面值都表示十进制值-2147483648(-231),分别为:• 0x8000_0000 [...]”。 - piet.t

1
在Java 7及以上版本中,数字-1001是有效的整数字面值。

我发现在Java 7及以上版本中,“-1001”实际上是一个有效的整数字面量...如果我误导了某个人,我很抱歉。 - Ana S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接