问题: 何时会发生自动类型转换?
在一个赋值语句中,当赋值运算符左侧变量的类型和右侧的表达式不一致时, 就会发生自动类型转换.
问题:自动类型转换的规则是什么?
将赋值运算符右侧表达式的类型自动转换为左侧表达式变量的类型.
问题: 在不同类型数据间赋值, 是安全的吗?
问题:何为数值溢出,为什么会发生数值溢出?
任何数据类型都只能用有限的位数来存储数据, 也就是说任何数据类型的数据表达范围都是有限的. 如果我们向变量赋以超出其表示范围的数据, 就会发生数值溢出现象(这可能导致灾难性的后果).
生活中数值溢出的例子:
整数的数值溢出:
扫描二维码关注公众号,回复:
12936304 查看本文章
[注]右侧数据为程序运行后所得结果.
有符号整数和无符号整数的区别:
有符号整数的最高位被解释为符号位(0 -> 正, 1-> 负), 而无符号整数的最高位被解释为数据位.
整数的上溢出现象:
[注]图中所示变量a的类型为无符号短整型.
[注]图中所示变量a在第二行中被解释为无符号整数, 在第三行中被解释为有符号整数.
[注]黄色区域第三行所示二进制数据为-32768的补码, 这是人为规定的.
[注]负数在内存中以补码形式存放.
整型数据到短整型数据过程中的数值丢失:
[注]int型变量在内存中占4个字节, 而short型变量在内存中占2个字节.
[注]short型变量只保留了int型变量的低两字节数据.
两个无符号短整型数据做减法运算: