2013-02-07 34 views
7

Tôi đang cố gắng tìm ra ý nghĩa thực sự đằng sau những hậu tố này. Nói cách khác, tôi đang cố gắng "dịch" chúng.Số nguyên thủy và hậu tố của chúng

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

Ví dụ: Tôi giả sử rằng "f" là viết tắt của f loat. Nhưng đối với những gì không, ví dụ "M" là viết tắt của. Tại sao "d" không được sử dụng cho d ecimal? Đối với những gì "uy" đứng cho? Và cứ thế ...

Có ai có thể "dịch" điều này không?

+1

s cho ngắn, l cho lâu dài. chúng tôi và ul cho unsigned ngắn và unsigned dài. D có thể gây nhầm lẫn cho thập phân vì trong c, d là int. Tôi chỉ đang suy đoán về điều đó. b được sử dụng cho các ký tự ascii và B cho các chuỗi, vì vậy y có lẽ là lựa chọn tốt nhất tiếp theo .. cũng đầu cơ – Gray

+2

FYI: [Danh sách đầy đủ các hậu tố chữ trên MSDN] (http://msdn.microsoft.com/en- chúng tôi/thư viện/dd233193.aspx). – Daniel

+1

Vì trong danh sách đó 'sbyte' là' y' nên có nghĩa là 'byte' sẽ là' uy' vì nó là một bYte không được ký. –

Trả lời

8

Tôi chỉ có thể suy đoán, nhưng lưu ý rằng vì a-f là giá trị thập lục phân hợp lệ, chúng không thể được sử dụng cho hậu tố cho các loại tích phân. Đó có lẽ là lý do bYte và deciMal nhận được các từ viết tắt ít nhớ hơn. Tương tự như vậy, lưu ý rằng có đủ riêng biệt (rất hiếm khi được sử dụng) đủ để sử dụng ký hiệu thập lục phân với phao: LF cho phao và lf cho float32s.

Bằng những quy tắc, tất cả những điều sau đây là literals hợp lệ:

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

Tôi nghĩ @kvb đã suy đoán thực sự tốt. Dưới đây là hai bổ sung nhỏ:

  • Có một vấn đề nhỏ trong bảng của bạn, f là một hậu tố sử dụng cho float32 (còn gọi là single tương ứng với System.Single) trong khi dấu chấm động mà không suffix trở thành F # float (tương ứng với System.Double) . Việc đặt tên của phao nổi thực sự bị nhầm lẫn trong F #, vì vậy tôi không nghĩ rằng điều này có bất kỳ logic đặc biệt nào (chỉ cần phân biệt giữa hai loại phao).

  • Bảng của bạn cũng không bao gồm l (được sử dụng cho int). Điều này có nghĩa là int16, int32int64 có hậu tố s, lL tương ứng (có thể có nghĩa là "ngắn", "dài" và "dài" trong thuật ngữ C).

  • Tôi thích đọc hậu tố M bằng số thập phân dưới dạng "tiền", vì số thập phân thường được sử dụng để đại diện cho tiền (vì độ chính xác cao). Tôi không chắc nếu đây là lý do tại sao tiền tố là M, nhưng nó rất dễ nhớ :-).

Các vấn đề liên quan