2013-02-07 13 views
7

我试图弄清楚这些后缀背后的真正含义。换句话说,我试图“翻译”它们。数字原语及其后缀

+----+--------------+--------+ 
| |  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  | 
+----+--------------+--------+ 

例如,我假设“f”代表f憎恶。但是对于例如“M”代表。为什么“d”不用于d ecimal? “uy”代表什么?等等......

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

+1

s简而言之l长。我们和ul为unsigned short和unsigned long。 D可能会令人困惑,因为在c中,d是一个整数。我只是在猜测那个。 b用于ascii字符,B用于字符串,所以y可能只是下一个最佳选择..也是猜测 – Gray

+2

仅供参考:[MSDN上文字后缀的完整列表](http://msdn.microsoft.com/zh-cn/我们/库/ dd233193.aspx)。 – Daniel

+1

由于在这个列表中'sbyte'是'y',所以'byte'将会是'uy',因为它是一个Unsigned bYte。 –

回答

8

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

通过这些规则,下面所有的都是有效的文字:

0xb // int, in hex 
0xby // byte, in hex 
0xabcdef // int, in hex 
0xabcdeflf // float32, in hex 
8

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

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

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

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