Cách đây không lâu, có người nói với tôi rằng long
không phải là 64 bit trên máy 64 bit và tôi nên luôn luôn sử dụng int
. Điều này không có ý nghĩa với tôi. Tôi đã thấy các tài liệu (chẳng hạn như tài liệu trên trang web chính thức của Apple) nói rằng đó long
thực sự là 64 bit khi biên dịch cho CPU 64 bit. Tôi đã tìm kiếm những gì nó đã có trên Windows 64 bit và tìm thấy
- Windows:
long
vàint
duy trì độ dài 32 bit và các loại dữ liệu mới đặc biệt được xác định cho các số nguyên 64 bit.
(từ http://www.intel.com/cd/ids/developer/asmo-na/eng/197664.htm?page=2 )
Tôi nên dùng gì? Tôi có nên định nghĩa một cái gì đó như uw
, sw
((un) chiều rộng đã ký) là long
nếu không có trên Windows, và nếu không thì kiểm tra kích thước bit CPU đích?
sizeof(long) == 8
, ngay cả trên Windows :-)
size_t
hoặc một loại trình vòng lặp để lặp lại, không int
hoặcint64_t
size_t
nó trở nên khó khăn gần số âm, vì size_t
không dấu. Vì vậy, for(size_t i=0; i<v.size()-2; i++)
thất bại cho kích thước vectơ 0 và 1. Một ví dụ khác : for(size_t i=v.size()-1; i>=0; i--)
.