8

我试图弄清楚这些后缀背后的真正含义是什么。换句话说,我正在尝试“翻译”它们。

+----+--------------+--------+
|    |     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 | float32      | f      | (edited, thanks Thomas)
| 11 | decimal      | M      |
+----+--------------+--------+

例如,我假设“f”代表 浮点数。但是,例如“M”代表什么。为什么“d”不用于d小数?“uy”代表什么?等等……

任何人都可以“翻译”这个吗?

4

2 回答 2

9

我只能推测,但请注意,由于 af 是有效的十六进制值,它们不能用于整数类型的后缀。这可能是 bYte 和 deciMal 的助记符缩写略少的原因。同样,请注意,对于浮点数使用十六进制表示法有单独的(很少使用)就足够了:LF对于浮点数和lf对于 float32s。

根据这些规则,以下所有内容都是有效的文字:

0xb  // int, in hex
0xby // byte, in hex
0xabcdef // int, in hex
0xabcdeflf // float32, in hex
于 2013-02-07T19:52:00.980 回答
9

我认为@kvb 做了一个很好的推测。这里有两个小的补充:

  • 您的表格中有一个小问题,f是用于float32(也称为single对应于System.Single)的后缀,而没有后缀的浮点变为 F# float(对应于System.Double)。浮点数的命名在F#中真的很混乱,所以我认为这没有什么特殊的逻辑(只是需要区分两种浮点数)。

  • 您的表也不包括l(用于int)。这意味着int16,int32int64有后缀s,lL(在 C 术语中可能意味着“short”、“long”和“long long”)。

  • 我喜欢将小数的后缀读M作“钱”,因为小数最常用于表示钱(因为它的精度很高)。我不确定这是否是前缀为 的原因M,但很容易记住:-)。

于 2013-02-07T20:22:57.417 回答