2013-02-07 13 views
7

Sto cercando di capire qual è il vero significato di questi suffissi. In altre parole sto cercando di "tradurli".Primitive numeriche e relativi suffissi

+----+--------------+--------+ 
| |  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. Suppongo che "f" sta per f loat. Ma per cosa, ad es. "M" sta per. Perché "d" non viene utilizzato per d ecimal? Per cosa significa "uy"? E così via ...

Qualcuno può "tradurre" questo?

+1

s in breve, l a lungo. noi e ul per unsigned breve e unsigned long. D potrebbe essere fonte di confusione per i decimali perché in c, d è un int. Sto solo speculando su quello. b è usato per i caratteri ascii e B per le stringhe, quindi è probabilmente solo la prossima scelta migliore ... speculazione – Gray

+2

FYI: [L'elenco completo dei suffissi letterali su MSDN] (http://msdn.microsoft.com/it/ us/library/dd233193.aspx). – Daniel

+1

Poiché su quella lista 'sbyte' è' y' ha senso che 'byte' sia' uy' dato che è un byte senza segno. –

risposta

8

Posso solo speculare, ma si noti che poiché a-f sono valori esadecimali validi, non possono essere utilizzati per i suffissi per i tipi interi. Questa è probabilmente la ragione per cui bYte e deciMal ottengono le abbreviazioni leggermente meno mnemoniche. Allo stesso modo, si noti che esistono suffissi separati (molto usati raramente) per l'uso della notazione esadecimale con i float: LF per i float e lf per float32s.

Con queste regole, tutti i seguenti sono letterali validi:

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

penso @kvb fatto davvero una buona speculazione. Qui sono due piccole aggiunte:

  • C'è un problema minore nella tabella, f è un suffisso usato per float32 (chiamati anche single corrispondente a System.Single) mentre virgola mobile senza suffisso diventa F # float (corrispondente a System.Double) . La denominazione dei float è davvero confusa in F #, quindi non penso che questo abbia una logica speciale (solo una necessità di distinguere tra due tipi di float).

  • La tabella non include anche l (che viene utilizzato per int). Ciò significa che int16, e int64 hanno suffissi s, l e L rispettivamente (che probabilmente significa "breve", "lungo" e "lungo lungo" nella terminologia C).

  • Mi piace leggere il suffisso M in decimali come "denaro", perché il decimale è più spesso utilizzato per rappresentare il denaro (a causa della sua alta precisione). Non sono sicuro se questo è il motivo per cui il prefisso è M, ma è facile da ricordare :-).