当前位置:  开发笔记 > 编程语言 > 正文

为什么当表达式中有另一个长值时,我的整数文字没有被提升为long类型?

如何解决《为什么当表达式中有另一个长值时,我的整数文字没有被提升为long类型?》经验,为你挑选了1个好方法。

码:

public class Foo
{
    public static void main(String[] args)
    {
        long i = 4294967296l;
        System.out.println(i + 65536 * 65536);
        System.out.println(i + 65536L * 65536);
    }
}

输出:

4294967296
8589934592

它看起来像在第一个System.out.println语句中,65536 * 65536被评估为int它包装的结果类型0.

我想知道为什么在这个声明中,数字没有提升到long.我认为i这个陈述中长变量的存在足以促进65536长期变化.



1> Eran..:

在加法之前计算乘法(运算符优先级),因此首先65536 * 65536计算为int乘法(因为两个操作数都是int文字),并且结果被提升为long以添加a long和a int.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有