我刚接触C#,想要了解值(values)的工作原理。当我看一个普通的整数值时,它有三个重要的部分:类型、名称和值。
int testInt = 3;
| | |
Type Name Value
但是当我看到浮点数时,由于后缀F
,会有一点困惑。
float testFloat = 3.0F;
| | | |
Type Name Value Type
现在这里有两种类型,没有F
后缀时,值将是双精度浮点型。但是当我可以声明双精度变量时,为什么会发生这种情况呢?
现在有两种类型,在没有F
后缀的情况下,值将为双精度。但是,如果我可以用双精度变量声明,为什么会出现这种情况?
double testDouble = 3.0D;
第一个词是double
,应该足够了,不是吗?对于带有后缀M的十进制值也是如此:
decimal testDecimal = 3.0M;
当涉及到其他后缀时,它开始让我感到非常困惑:
ulong bigOne = 2985825802805280508UL;
我以前在测试中使用过 ulong
,知道 u
代表 "unsigned",可以让值比正常情况下高两倍。然后你再把 U 作为后缀,L 表示字面量(literal),就像 Google 所说的那样。据我理解,“字面量”是包含数字的值类型。但是我不明白的是,为什么即使没有后缀,这个 ulong 也能工作?
ulong bigOne = 2985825802805280508;
接着我尝试了不同的方法来理解后缀的重要性。
byte testLong = 12312UL;
这不起作用是因为该值对于字节(254)来说太高,后缀不能将其转换为长变量。
为什么第一个单词(类型)不足以进行声明?第一个单词应该足以告诉类型。始终给值加上后缀是最佳实践吗?
U
代表无符号(unsigned),而不是未赋值(unassigned)。 - Lee Taylorfloat
类型的变量并不能确定您赋值的数字字面量的类型,也不能改变其类型。 - Servy