上面有很多回复,但不够系统我再给整理一下。
有以下几条规则:
1,整型常量分两种:int型和long型
2,long型常量赋值给数值变量时特点是:类型降低必须强转,自动进行类型提升
3,int型常量赋值给数值变量比较特殊:类型降低时先判断常量值是否超出变量类型的表示范围,
如果没超出自动进行类型转换,超出则要强转,自动进行类型提升
4,int型常量是默认的数值常量,出现的非常频繁,赋值给变量时十分有简化操作的必要,
因此多了判断范围这一步
5,对于数值变量有六种(byte->short->int->long->float->double),
变量之间的赋值规则比较统一只要是类型提升的都自动进行,只要是类型降低的都必须强制转换
6,数值常量与数值常量进行运算结果为数值常量,并且在编译优化阶段就已经运算完成得出一个常量结果
数值常量与数值变量运算的结果是数值变量
数值变量与数值变量运算的结果为数值变量
7,不进行范围判断的赋值一旦发生超出范围的情况,不进行处理结果为溢出后的值,
也就是通常正正相加的负
本题的第4行就是int型常量赋值给降低类型的变量的问题,第3行为变量之间赋值规则
第7行为long型变量赋值给long型变量,第8行为int型变量赋值给long型变量自动类型提升 |