C# 什么时候需要数字后缀L(长)?

C# 什么时候需要数字后缀L(长)?,c#,C#,我知道像1.5这样的东西是双精度的,所以您需要使用m后缀将其分配给十进制 十进制d=1.5;//不会编译 十进制d=1.5m;//将编译 现在,像0这样的文字是一个int。但是为什么我可以将它赋给long?将0与0L分配给long类型的变量之间有什么区别吗 长l=0; 长l=0L; 但是为什么我可以把它分配给一个长的 11.2.3各国: 从int到long、float、double或decimal。是此处的相关值。默认情况下,0是int,因此它可以隐式转换为long 将0和0L分配给变量0之

我知道像
1.5
这样的东西是双精度的,所以您需要使用
m
后缀将其分配给十进制

十进制d=1.5;//不会编译
十进制d=1.5m;//将编译
现在,像
0
这样的文字是一个int。但是为什么我可以将它赋给long?将
0
0L
分配给long类型的变量之间有什么区别吗

长l=0;
长l=0L;
但是为什么我可以把它分配给一个长的

11.2.3各国:

从int到long、float、double或decimal。
是此处的相关值。默认情况下,0是
int
,因此它可以隐式转换为
long

将0和0L分配给变量0之间有什么区别吗 输入长


它们的行为将完全相同。IL是完全相同的。

您还应该尝试
double x=0.0f很好用。随着
长l=0这是一个加宽转换。这些都是默许的。这可能是因为一个默认的数字是一个整数,它总是适合于一个长整数。但是如果您创建一个Int n=0L,那么您将得到一个错误。因为long不能总是适合int。
Implicit numeric conversions
The implicit numeric conversions are:
•   From sbyte to short, int, long, float, double, or decimal.
•   From byte to short, ushort, int, uint, long, ulong, float, double, or decimal.
•   From short to int, long, float, double, or decimal.
•   From ushort to int, uint, long, ulong, float, double, or decimal.
•   From int to long, float, double, or decimal.
•   From uint to long, ulong, float, double, or decimal.
•   From long to float, double, or decimal.
•   From ulong to float, double, or decimal.
•   From char to ushort, int, uint, long, ulong, float, double, or decimal.
•   From float to double.
Conversions from int, uint, long, or ulong to float and from long or ulong to double may cause a loss of precision, but will never cause a loss of magnitude. The other implicit numeric conversions never lose any information.