Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我们可以在不强制转换的情况下将32位的文本整数分配给short类型的变量?_C# - Fatal编程技术网

C# 为什么我们可以在不强制转换的情况下将32位的文本整数分配给short类型的变量?

C# 为什么我们可以在不强制转换的情况下将32位的文本整数分配给short类型的变量?,c#,C#,在我的理解中,文字整数默认属于System.Int32。如果是这样的话,为什么我们可以在不强制转换的情况下将System.Int32类型的文本整数赋值给short x short x = 1;//compilable 为什么我们不需要按如下方式使用铸造 short x = (short)1; 因为本规范允许第6.1.9节: int类型的常量表达式可以转换为sbyte,byte, short、ushort、uint或ulong提供了常量的值 表达式在目标类型的范围内 1实际上是int类型的常量

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

short x = 1;//compilable
为什么我们不需要按如下方式使用铸造

short x = (short)1;

因为本规范允许第6.1.9节:

int
类型的常量表达式可以转换为
sbyte
byte
short
ushort
uint
ulong
提供了常量的值 表达式在目标类型的范围内

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

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

  • 如果文本没有后缀,则它具有可以表示其值的第一种类型:
    int
    uint
    long
    ulong

因为本规范允许第6.1.9节:

int
类型的常量表达式可以转换为
sbyte
byte
short
ushort
uint
ulong
提供了常量的值 表达式在目标类型的范围内

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

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

  • 如果文本没有后缀,则它具有可以表示其值的第一种类型:
    int
    uint
    long
    ulong

为了清晰起见,添加了章节号-希望您不介意:)是否有PDF格式的C#规范文档而不是MS Word格式?我没有安装Word.:-)@CodeMocker:OpenOffice和LibreOffice等开源办公套件可以打开它,您不需要Word。谷歌文档或类似的在线服务也可以做到这一点。为了清晰起见,增加了章节号——希望你不介意:)有PDF格式的C#规范文档而不是MS Word格式的吗?我没有安装Word.:-)@CodeMocker:OpenOffice和LibreOffice等开源办公套件可以打开它,您不需要Word。谷歌文档或类似的在线服务也可以做到这一点。