三元操作符类型的转换规则:

简介: 三元操作符类型的转换规则:

1.若两个操作数不可转换,则不做转换,返回值为Object类型

2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换,int类型转换为long类型,long类型转换为float类型等。

3.若两个操作数中有一个是数字S,另外一个是表达式,且其类型标示为T,那么,若数字S在T的范围内,则转换为T类型;若S超出了T类型的范围,则T转换为S类型。

4.若两个操作数都是直接量数字,则返回值类型为范围较大者

三目:一边为byte另一边为char,结果为int
其它情况结果为两边中范围大的。适用包装类型

byte b = 1;
char c = 1;
short s = 1;
int i = 1;
i = true ? b : c; // int
b = true ? b : b; // byte
s = true ? b : s; // short

表达式:两边为byte,short,char,结果为int型
其它情况结果为两边中范围大的。适用包装类型

byte b = 1;
char c = 1;
short s = 1;
i = b + c; // int
i = b + b; // int
i = b + s; // int

当 a 为基本数据类型时,a += b,相当于 a = (a) (a + b)
当 a 为包装类型时, a += b 就是 a = a + b

byte b = 1;
char c = 1;
short s = 1;
b += s; // 没问题
c += i; // 没问题

常量任君搞,long以上不能越

byte b = 1;
char c = 1;
short s = 1;
b = (char) 1 + (short) 1 + (int) 1; // 没问题
// i = (long) 1 // 错误
相关文章
|
6天前
|
存储 编译器 C语言
【表达式求值】整型提升和算术转换
【表达式求值】整型提升和算术转换
20 0
|
6月前
|
Linux C语言 C++
操作符&算数转换题
操作符&算数转换题
36 0
|
7月前
|
编译器 C语言
操作符的属性,C语言中运算符的优先性和结合性,常见的问题表达式
操作符的属性,C语言中运算符的优先性和结合性,常见的问题表达式
|
9月前
|
JavaScript
布尔类型的转换规则?
1.使用 Boolean() 函数
|
9月前
隐式类型转换 算术转换 操作符的属性
隐式类型转换 算术转换 操作符的属性
34 0
|
10月前
|
存储 编译器 C语言
【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)
【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)
75 0
|
11月前
|
C语言
C语言——操作符(中)单目操作符、关系、逻辑、条件操作符
C语言——操作符(中)单目操作符、关系、逻辑、条件操作符
|
12月前
|
存储 Unix 编译器
表达式求值过程中会发生哪些隐藏的变化?求值顺序又由什么决定?——详解C表达式求值中的隐式类型转换,算术转换问题,以及操作符的属性
表达式求值过程中会发生哪些隐藏的变化?求值顺序又由什么决定?——详解C表达式求值中的隐式类型转换,算术转换问题,以及操作符的属性
116 0