为什么我们可以将一个32位的文字整数分配给short类型的变量而不进行强制转换?

时间:2014-02-07 14:41:09

标签: c#

在我的理解中,默认情况下,文字整数属于System.Int32。如果是这样,为什么我们可以在不进行转换的情况下将System.Int32类型的文字整数分配给short x

short x = 1;//compilable

为什么我们不需要使用如下铸造?

short x = (short)1;

1 个答案:

答案 0 :(得分:4)

因为规范允许6.1.9节中的内容:

  

int类型的常量表达式可以转换为sbytebyte,   shortushortuintulong,提供常量的值   表达式在目标类型的范围内。

1确实是int类型的常量表达式,因为(第2.4.4.2节“整数文字”):

  

整数文字的类型确定如下:

     
      
  • 如果文字没有后缀,则其中第一个类型可以表示其值:intuintlongulong。< / LI>