【发布时间】:2015-10-10 22:25:55
【问题描述】:
int 类型的最大十进制字面量是 2147483648。
因为Integer.MAX_VALUE 是2147483647,这句话可以被认为是真的吗?
请注意,上述声明中的重点是“int”。如果有人认为它是在“十进制文字”的上下文中讨论的,那么即使2147483649 等等,也应该是正确的。
所以,如果某个东西的类型是 int,那么它的最大值必须是 2147483647。
是我弄错了还是该声明应该更新?
【问题讨论】:
-
我不确定我是否理解您的问题,但您的引文后面的两段似乎阐明了这个问题。来自 JLS 中的同一部分:如果十进制文字 2147483648 出现在除一元减号运算符的操作数之外的任何位置,则会出现编译时错误;或者如果 int 类型的十进制文字大于 2147483648 (231)。
-
@alfasin 但是我怀疑这是否会使这个声明有效?我对这个陈述的问题,如果在这个陈述中甚至谈到了“一元减号运算符”,那么我可以理解。所以,它显然是模棱两可的。
-
现在你要脱离上下文了……这部分应该作为一个整体来阅读,一个句子结束的事实并不意味着上下文也一样。阅读以下句子可以清楚地表明,虽然
2147483648是最大的十进制文字 - 它仅在减号运算符之前才有效。 -
@alfasin 只是为了建立上下文,不能做出错误的陈述。
-
这个说法没有错。 2147483648 是与一元减号运算符一起使用时的有效 int。
标签: java