数字基元及其后缀

kr8*_*r85 8 f#

我想弄清楚这些后缀背后的真正含义是什么.换句话说,我正试图"翻译"它们.

+----+--------------+--------+
|    |     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      |
+----+--------------+--------+
Run Code Online (Sandbox Code Playgroud)

我假设"f"代表 f loat.但是,例如"M"代表什么.为什么不使用"d" d ecimal?"uy"代表什么?等等...

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

kvb*_*kvb 9

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

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

0xb  // int, in hex
0xby // byte, in hex
0xabcdef // int, in hex
0xabcdeflf // float32, in hex
Run Code Online (Sandbox Code Playgroud)


Tom*_*cek 9

我认为@kvb做了一个非常好的推测.这是两个小的补充:

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

  • 您的表格也不包括l(用于int).这意味着int16,int32int64具有后缀s,lL分别(这可能意味着,"短",在C的术语"长"和"长长").

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