首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么int i= 1024 * 1024 * 1024 * 1024编译没有错误?

为什么int i= 1024 * 1024 * 1024 * 1024编译没有错误?
EN

Stack Overflow用户
提问于 2014-07-10 20:17:41
回答 1查看 16K关注 0票数 154

int限制为-2147483648到2147483647。

如果我输入

代码语言:javascript
复制
int i = 2147483648;

然后,Eclipse将在"2147483648“下提示一个红色下划线。

但如果我这样做:

代码语言:javascript
复制
int i = 1024 * 1024 * 1024 * 1024;

它会编译得很好。

代码语言:javascript
复制
public class Test {
    public static void main(String[] args) {        

        int i = 2147483648;                   // error
        int j = 1024 * 1024 * 1024 * 1024;    // no error

    }
}

也许这是Java中的一个基本问题,但我不知道为什么第二个变体不会产生错误。

EN

回答 1

Stack Overflow用户

发布于 2014-07-11 14:35:27

除了arshajii的回答之外,我还想说明一件事:

导致错误的不是赋值,而是文字的使用。当你尝试的时候

代码语言:javascript
复制
long i = 2147483648;

你会注意到它也会导致编译错误,因为右边仍然是一个int-literal,超出了范围。

因此,使用int-values (包括赋值)的操作可能会在没有编译错误(也没有运行时错误)的情况下溢出,但编译器就是无法处理这些太大的文字。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24676375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档