Cách đây không lâu, có người nói với tôi rằng longkhô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 đó longthự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:
longvàintduy 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à longnế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_thoặc một loại trình vòng lặp để lặp lại, không inthoặcint64_t
size_tnó trở nên khó khăn gần số âm, vì size_tkhô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--).