2009-11-05 90 views
17

thể trùng lặp:
Assuming 32bit intsInt32 vs Int64 vs Int trong C#

Vì vậy, tôi đọc ở đâu đó rằng int bằng int32 trong C#. Có đúng trên các máy 64 bit không? Tôi có nên sử dụng int32 chỉ để đảm bảo không ai ở microsoft quyết định thay đổi kích cỡ của int?

+3

http://stackoverflow.com/questions/164643/assuming-32bit-ints – rahul

+0

Roger that. Không thể tìm thấy câu hỏi. – Faruz

Trả lời

27

int là một bí danh cho Int32

long là một bí danh cho Int64

Kích thước của chúng sẽ không thay đổi, ở tất cả, chỉ cần sử dụng bất cứ một bạn cần sử dụng.

Việc sử dụng chúng trong mã của bạn là không có cách nào liên quan đến máy 32bit và 64bit

EDIT: Trong tham chiếu đến các ý kiến ​​về chủ đề an toàn. Dưới đây là một câu hỏi và câu trả lời tốt chi tiết bất kỳ vấn đề nào bạn cần phải biết. Under C# is Int64 use on a 32 bit processor dangerous

+4

Thực ra tôi tin rằng khi nói đến đồng bộ hóa chủ đề, trạng thái 32bit và 64bit sẽ quan trọng, khi đọc Int64 trên bộ xử lý 32 bit yêu cầu 2 thao tác xử lý, thay vì chỉ 1, có thể nhập cho an toàn luồng. – Ian

+2

@Ian: Atomicity không được bảo đảm cho int32 lần đọc theo thông số ngôn ngữ chung. –

7

Trên cả hai máy 32-bit và 64-bit:

  • long là 64-bit, đó là một từ đồng nghĩa với System.Int64.
  • int là 32 bit, nó là một từ đồng nghĩa với System.Int32.
2

Đơn giản chỉ cần NO. Các loại nhất quán.

7

Bạn không cần phải lo lắng. An intInt32 là số nguyên có dấu 32 bit và sẽ không thay đổi, bất kể nền tảng bạn đang sử dụng.

Xem Microsoft C# spec (phần 1.3), ECMA C# spec (mục 8.2.1) và ECMA CLI spec (mục 8.2.2).

2

Integer là 32 bit Long là 64 bit

Trên cả hai bộ vi xử lý 32 và 64 bit

1

tôi đã sử dụng Int32 trong năm đầu tiên của tôi với NET (sau đó 1.0). Hầu hết đã làm nó cho khả năng đọc chéo ngôn ngữ, như Int32 trông giống nhau trong VB như trong C#. Nhìn lại, tôi thấy toàn bộ mối quan tâm này là ngớ ngẩn. Sử dụng các loại bản địa và không đổ mồ hôi nó.