首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这些表达式给我输出而不是编译错误?

为什么这些表达式给我输出而不是编译错误?
EN

Stack Overflow用户
提问于 2015-04-26 12:39:41
回答 1查看 43关注 0票数 1

当我收到这道题的时候,我正在考试,下面的问题的输出是什么?

代码语言:javascript
复制
 public class ClassicQuestion {
        public static void main(String[] args) 
        {
            int i = 25;
            double j = 95.0;
            System.out.println(j+=i);
            System.out.println(i+=j);

        }

}

答案的选择是

  1. 编译时间误差
  2. 运行时错误
  3. 120.0 145
  4. 120.0 120

我不知道正确的答案,但我认为正确的答案将是一个,但给我不正确的答案?如何在不进行转换的情况下将一个变量分配给不同类型的数据类型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-26 12:41:07

正确答案3。

因为根据

jls形式的复合赋值操作符E1 op= E2 evalute to E1 = (T) ((E1) op (E2)),其中T是E1的类型,但E1只计算一次

因此,您的j+=i更改为j=(double)(j+i),从现在起,j值是120.0,下次执行i+=j时,它将更改为i=(int)(i+j),因此是145

所以输出是120.0 145

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

https://stackoverflow.com/questions/29877733

复制
相关文章

相似问题

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