Tôi đã tải xuống MinGW-64, vì vậy bây giờ tôi có thể biên dịch chương trình 64 bit cho Windows 7, sử dụng g ++ 4.7.0 (thử nghiệm). Nhưng dòng sau:sizeof (dài) trong 64-bit C++
cout << sizeof(long) << " " << sizeof(void*) << endl ;
in 4 8
, không 8 8
. Các tài liệu cho g ++ 4.6.0 nói:
các bộ môi trường 64-bit int đến 32 bit và dài và con trỏ đến 64 bit
Có ai biết tại sao không phải là sizeof(long)
8?
Đã chỉnh sửa để thêm: Nguồn gây nhầm lẫn của tôi là g ++ 4.7.0 cho Windows 64 bit không phải là một phần chính thức của Bộ sưu tập GNU Compiler. Và đây là phiên bản 64 bit đầu tiên với long
32 bit, vì vậy tài liệu đơn giản không áp dụng cho nó. Thật vậy, nếu bạn đi đến relevant web page, mục đầy đủ cho IA-32/x86-64 gồm này:
...
Có vẻ như ai đó vừa giảm xuống một nửa số câu trả lời mà không để lại bất kỳ bình luận nào ... – Mysticial
@ Tâm lý: Và câu hỏi của tôi nữa! – TonyK
Nếu bạn cần số nguyên rộng 64 bit, hãy sử dụng int64_t/uint64_t hoặc xác định số của riêng bạn. Bằng cách đó, mã của bạn sẽ được di chuyển và sẽ không dựa vào chi tiết nền tảng cho các kích thước int/long/short. – David