【问题标题】:What is numeric promotion?什么是数字促销?
【发布时间】:2009-02-23 01:42:44
【问题描述】:

谁能说出什么是数字促销?

【问题讨论】:

标签: java


【解决方案1】:

数值提升是将较小的数值类型转换为较大的数值类型,以便可以进行整数和浮点运算。在数值提升中,byte、char 和 short 值被转换为 int 值。如有必要,int 值也会转换为 long 值。 long 和 float 值会根据需要转换为 double 值。

【讨论】:

    【解决方案2】:

    数值提升规则

    1. 如果两个值具有不同的数据类型,Java 会自动将其中一个值提升为两种数据类型中较大的一个。

    2. 如果其中一个值是整数而另一个是浮点数,Java 会自动将整数值提升为浮点值的数据类型。

    3. 较小的数据类型,即 byte、short 和 char,在与 Java 二进制算术运算符一起使用时首先被提升为 int,即使两个操作数都不是 int。

    4. 在发生所有提升并且操作数具有相同的数据类型后,结果值将具有与其提升的操作数相同的数据类型

    【讨论】:

      【解决方案3】:

      数字提升是将操作数(至少涉及的数字之一)转换为通用类型。

      例如:

      int i = 10;
      double d1 = 2.5;
      double d2 = d1 * i;
      

      在这种情况下,i 被提升为 double,因此可以执行计算。在某些方面,您可以认为这类似于装箱,但装箱涉及从结构体移动到对象(从堆栈到堆)。但是,使用类比确实可以理解积分值被制成浮点以执行计算的事实。

      【讨论】:

        【解决方案4】:

        If you look here,您将看到以下引用:

        数字提升(§5.6)带来 数字运算符的操作数 通用类型,以便操作可以 执行。

        他们是referencing this section,他们在其中提供了各种示例。典型的例子是整数乘以浮点数。整数被提升为浮点数,因此相乘的结果是浮点数。

        【讨论】:

          猜你喜欢
          • 2017-11-08
          • 1970-01-01
          • 1970-01-01
          • 2020-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多