Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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
为什么.NET自然会采用某些类型?_.net_Types_Inferred Type - Fatal编程技术网

为什么.NET自然会采用某些类型?

为什么.NET自然会采用某些类型?,.net,types,inferred-type,.net,Types,Inferred Type,考虑以下代码: var x = 32; 数字32将适用于sbyte、byte、short、ushort等 为什么.NET假定这是一个int 对于var x=3.2,同样的问题.NET假定double 为什么.NET假定这是一个int 错误的问题/主题。是C编译器假定这是一个int 摘自: 整数文本的类型确定如下: 如果文本没有后缀,则它具有可以表示其值的第一种类型:int、uint、long和ulong 和来自: 如果未指定实数类型后缀,则实数文本的类型为double 编译器的另一个重要“窍门

考虑以下代码:

var x = 32;
数字32将适用于
sbyte
byte
short
ushort

为什么.NET假定这是一个
int

对于
var x=3.2,同样的问题
.NET假定
double

为什么.NET假定这是一个int

错误的问题/主题。是C编译器假定这是一个
int

摘自:

整数文本的类型确定如下:
如果文本没有后缀,则它具有可以表示其值的第一种类型:int、uint、long和ulong

和来自:

如果未指定实数类型后缀,则实数文本的类型为double

编译器的另一个重要“窍门”使其合法化:

byte b = 5;
(通常5是一个
int
,并且没有从
int
字节的隐式转换),但是:

摘自:

隐式常量表达式转换允许以下转换:

  • int类型的常量表达式(第7.15节)可以转换为sbyte、byte、short、ushort、uint或ulong类型,前提是常量表达式的值在目标类型的范围内

  • long类型的常量表达式可以转换为ulong类型,前提是常量表达式的值不是负值

为什么.NET假定这是一个int

错误的问题/主题。是C编译器假定这是一个
int

摘自:

整数文本的类型确定如下:
如果文本没有后缀,则它具有可以表示其值的第一种类型:int、uint、long和ulong

和来自:

如果未指定实数类型后缀,则实数文本的类型为double

编译器的另一个重要“窍门”使其合法化:

byte b = 5;
(通常5是一个
int
,并且没有从
int
字节的隐式转换),但是:

摘自:

隐式常量表达式转换允许以下转换:

  • int类型的常量表达式(第7.15节)可以转换为sbyte、byte、short、ushort、uint或ulong类型,前提是常量表达式的值在目标类型的范围内

  • long类型的常量表达式可以转换为ulong类型,前提是常量表达式的值不是负值


尝试
decimald=3.2,它会产生一个启发性的错误。@HenkHolterman-为什么编译器不能从左边的类型说明符自动推断出这个错误?-如果我没有输入x=32;,它就不会抱怨了?编译器有一个左侧要检查的情况的数量可能重复,这与它尝试评估表达式的结果类型(该表达式不会存储在任何显式变量中)的次数相比要小得多。有不同的规则取决于它是否在处理作业,这会导致语言更加混乱。因此编译器只能使用构成表达式的子表达式的类型来确定其类型,它会产生一个启发性的错误。@HenkHolterman-为什么编译器不能从左边的类型说明符自动推断出这个错误?-如果我没有输入x=32;,它就不会抱怨了?编译器有一个左侧要检查的情况的数量可能重复,这与它尝试评估表达式的结果类型(该表达式不会存储在任何显式变量中)的次数相比要小得多。有不同的规则取决于它是否在处理作业,这会导致语言更加混乱。因此编译器只能使用组成表达式的子表达式的类型来确定其类型。