我正在试图弄清楚这些后缀背后的真正含义是什么。换句话说,我正试图“翻译”它们。
+----+--------------+--------+
| | Type | Suffix |
+----+--------------+--------+
| 1 | byte | uy |
| 2 | sbyte | y |
| 3 | int16 | s |
| 4 | uint16 | us |
| 5 | int, int32 | |
| 6 | uint, uint32 | u |
| 7 | int64 | L |
| 8 | uint64 | UL |
| 9 | float | |
| 10 | float | f |
| 11 | decimal | M |
+----+--------------+--------+
E.g。我认为“f”代表 f loat。但是,例如, “M”代表。为什么“d”不用于 d ecimal? “uy”代表什么?等等......
任何人都可以“翻译”这个吗?
答案 0 :(得分:8)
我只能推测,但请注意,由于a-f是有效的十六进制值,因此它们不能用于整数类型的后缀。这可能是bYte和deciMal得到略少于助记符的缩写的原因。同样,请注意,对浮点数使用十六进制表示法有单独的(很少使用),浮点数为LF
,浮点数为lf
。
根据这些规则,以下所有内容都是有效的文字:
0xb // int, in hex
0xby // byte, in hex
0xabcdef // int, in hex
0xabcdeflf // float32, in hex
答案 1 :(得分:8)
我认为@kvb做了一个非常好的推测。这是两个小的补充:
您的表格中存在一个小问题,f
是用于float32
的后缀(也称为single
对应System.Single
),而浮动点没有后缀变为F#float
(对应System.Double
)。浮点数的命名在F#中确实很混乱,所以我认为这没有任何特殊的逻辑(只需要区分两种浮点数)。
您的表格也不包含l
(用于int
)。这意味着int16
,int32
和int64
分别具有后缀s
,l
和L
(这可能意味着“短”,“ C语言中的“长”和“长”。
我喜欢将小数字的M
后缀读作“money”,因为十进制最常用于表示金钱(因为它的高精度)。我不确定这是前缀为M
的原因,但很容易记住: - )。