2013-02-07 30 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的原因,但很容易記住:-)。