在我的理解中,默认情况下,文字整数属于System.Int32
。如果是这样,为什么我们可以在不进行转换的情况下将System.Int32
类型的文字整数分配给short x
?
short x = 1;//compilable
为什么我们不需要使用如下铸造?
short x = (short)1;
答案 0 :(得分:4)
因为规范允许6.1.9节中的内容:
int
类型的常量表达式可以转换为sbyte
,byte
,short
,ushort
,uint
或ulong
,提供常量的值 表达式在目标类型的范围内。
1
确实是int
类型的常量表达式,因为(第2.4.4.2节“整数文字”):
整数文字的类型确定如下:
- 如果文字没有后缀,则其中第一个类型可以表示其值:
int
,uint
,long
,ulong
。< / LI>