自动类型提升&手动强制类型转换

一、长短数值运算中,短的自动提升&想要长变短的手动强制转换格式

【】在基本运算的两端需要是同类型才可以运算,等号两端不是同类型数据不能运算

【】只有两端都是数值类型,才有可能不是同类型也能运算。其余都不能运算。

1自动类型提升(短的和长的运算,短的可以自动变成长的)

转换时以占用内存较大的为主,都变成长的,可以装入长的数据类型里。自动提升后的长的结果能装入短的吗?

【】自动提升后,得到的长的结果,如果装入长的的int,能装下,如果装入短的byte就无法装下,丢失精度,丢失三个字节。编译报错。

2手动强制类型转换

【】将长的运算结果强制丢掉多余字节,转换为需要的短的数值类型

【】运算式左侧注明需要转换成的短的数据类型,都要加小括号。

【】但是风险在于,如果长的结果的有效数据短的装不下,就会丢失导致错误

 
 
 
 二、字符类型数据的数字性---字符类型数据可参与自动提升和强制转换

【】二进制和生活中文字的对应表,也叫做编码表。这些编码就是字符类型的数据。字符本质就是数字。

这张表里面只有美国的文字,全名叫做美国信息标准交换码ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)

【】由于字符类型数据是一个两个字节的数,所以可以参与运算,这是字符类型的特殊之处

【】'a'是2字节的二级制数+1,就会自动提升到32位和默认int类型的1运算,得到32位的一个计算结果

【】运算后自动提升想要回到字符类型,可以使用强制转换(char)('a'+1)

【】想要单纯知道'a'的代表数字,可以'a'+0,自动提升后获取

 
 
三、类型转换的面试题

【】这个运算报错

【】4是int类型,编译器会判断4这个数值是否在byte的取值范围内,如果在,编译器底层会做一个自动转换过程,会把4默认强转byte,把最后一个字节赋到b这个变量中

【】b=b1+b2,因为右边不确定,右边全是变量,无法确定是否在b的byte两字节的取值范围内,因此无法检查。

【】这个运算不会报错

【】同样面临右边全是变量的情况,int却没这个问题。因为作为默认类型的int类型,一旦超出就会把超出的第33位舍弃,变成其他值(是错误的数值),但可以编译通过。

 
posted @ 2025-06-13 12:15  ibddindonon  阅读(12)  评论(0)    收藏  举报