`
ydwcn
  • 浏览: 65154 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

双目数值类型提升

阅读更多

一个题目:

 

public class Demo   
{   
   public static void main(String[] args)   
   {   
       int a = 5;   
       System.out.println("Hello" + (a > 5 ? 9.0 : 9));   
   }   
}  

 

运行结果是(B

A Hello9    B Hello9.0    C  编译出错      D 以上答案都不对

双目数值类型提升(binary numeric promotion)

在双目数值类型提升的情况下,如果任意一个操作数是 float 类型,那另外一个会被转换成为 float 类型;

条件表达式的一些说明:
操作数其中一个是 byte 或 Byte 类型,而另一个是 short 或 Short 类型,那么这个表达式就是 short 类型;
操作数中的一个是类型 T (T 可以是 byte、short 或者是 char 类型),而另一个是 int 类型的常数,其可以用 T 类型来表示时,那么这个表达式就是 T 类型;
操作数中的一个是 Byte 类型,而另一个是 int 类型的常数,其可以用 byte 类型来表示,那么这个表达式就是 byte 类型;
操作数中的一个是 Short 类型,而另一个是 int 类型的常数,其可以用 short 类型来表示,那么这个表达式就是 short 类型;
操作数中的一个是 Character 类型,而另一个是 int 类型的常数,其可以用 char 类 型来表示,那么这个表达式就是 char 类型;
否则,双目数值提升(binary numeric promotion)会被用于操作数的类型中,条件表达式的类型是第二个和第三个操作数提升后的类型。注意:双目数值提升时进行拆箱转换和值集转换(value set conversion);

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ydwcn/archive/2010/01/21/5218926.aspx

 

分享到:
评论

相关推荐

    数据结构实习报告21

    - **运算符和操作数处理**:遍历表达式,将数字转换为数值类型,将运算符压入运算符栈,遇到括号时特殊处理。 - **运算顺序**:根据运算符的优先级进行计算,遇到高优先级运算符时先进行计算。 4. **编码问题与...

    C语言运算符PPT学习教案.pptx

    3. **类型转换**:在混合数据类型的运算中,会自动进行类型转换,通常将较小的类型提升到较大的类型,例如,`int`会被提升到`float`或`double`。需要注意的是,浮点数除法可能会导致舍入误差。 4. **增量运算符**:...

    自己总结java学习笔记

    5. **数值数据类型**:Java提供了各种数值类型,包括`byte`, `short`, `int`, `long`(整数),`float`, `double`(浮点数)以及`char`和`boolean`。 6. **值传递**:Java中的参数传递始终是值传递,对于对象和数组...

    《计算机导论》教案[软件]终稿.pdf

    1. 计算机和数据:介绍了计算机科学的概述,数据表示,数值表示和数据操作。例如,讲解了冯·诺依曼模型,计算机的发展历史,以及不同数据类型的基本概念。 2. 计算机硬件:涵盖计算机组成和计算机网络。这部分会...

    Java运算符+(优先级、目数)+.doc

    此外,位运算符通常用于处理整数类型,而移位运算符在处理整数时会考虑到数据类型的限制,如Char、byte、short会被提升到int,long类型的移位则会保留long的特性。 理解这些运算符及其优先级和目数是编写高效和准确...

    数据结构的作业 实现四则运算的代码

    四则运算,即加法、减法、乘法和除法,是基础数学运算,也是计算机程序处理数值的基础。在实际编程中,这些运算通常通过编程语言内置的运算符来完成,但为了理解数据结构与算法的原理,有时我们需要手动实现这些功能...

    C语言程序基础教学PPT

    C语言中的数据类型包括基本类型(如`char`、`int`、`float`、`double`)和复合类型(如`struct`)。程序结构的组成通常涉及函数、控制结构(如`if`、`for`、`while`循环)、数组和指针等概念。 编写C程序时,需要...

    JAVA命名规范

    - 关键字与左括号之间、参数列表中逗号后、双目操作符两侧、三元操作符的操作数间以及类型转换后加空格。 - 特殊情况下,如操作符与其操作数之间、方法名与左括号间、三目运算符的问号和冒号两侧不应有空格。 9. ...

    [word]视频压缩参数说明(加精).zip

    视频压缩主要分为两种类型:有损压缩和无损压缩。有损压缩会牺牲部分画质来实现更高的压缩比,而无损压缩则试图在不损失画质的前提下进行压缩,但通常压缩比较低。在实际应用中,有损压缩如H.264、HEVC(H.265)等...

    C#编译器错误码[参照].pdf

    18. **错误 CS0031**:常数值不能转换为类型值。检查常量的类型和目标类型是否兼容。 19. **错误 CS0034**、**CS0035**:操作符对操作数存在二义性。避免操作符重载的二义性。 20. **错误 CS0036**:输出参数不能...

    实验报告-实验82

    1. 操作数:只包含0到9这10个数字,可能产生中间和最终的计算结果是任意数值。 2. 运算符:只有四种基本算术运算符,即加(+), 减(-), 乘(*), 和除(/)。这里的加和减仅表示双目运算,不涉及单目正负号。 3. 表达式:...

    数据结构课程设计报告算术表达式实现

    通过课程设计,学生可以提升基本编程素养和软件开发的职业习惯。 2. **问题描述**: - 程序应能接收并正确计算包含加、减、乘、除和括号的合法算术表达式,处理的数值范围为实数。 - 另外,程序还需处理大整数...

    C编码规范专业版

    - **双目运算符**:两侧需有空格,如 `=`, `+=`, `>=`, `, `+`, `&&`, `, `^` 等。 - **函数参数**:逗号后应留空格,例如 `void func(int x, int y, int z)`。 - **for 语句**:分号后应留空格,如 `for (i=0; i; i...

    C#位运算以及实例计算详解

    6. **位右移运算符 (>>)**:将数值的所有位向右移动指定的位数,左侧空出的位置根据数据类型填充0(对于无符号整数,两侧都会填充0)。例如,`11 (00001011) >> 2` 的结果是2 (00000010),相当于11除以2的2次方。 ...

Global site tag (gtag.js) - Google Analytics