bool
là loại C++ được tích hợp trong khi BOOL
là loại cụ thể của Microsoft được định nghĩa là int
. Bạn có thể tìm thấy nó trong windef.h
:
typedef int BOOL;
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
Các giá trị cho một bool
là true
và false
, trong khi cho BOOL
bạn có thể sử dụng giá trị bất kỳ int
, mặc dù TRUE
và FALSE
macro được định nghĩa trong windef.h
tiêu đề.
Điều này có nghĩa là toán tử sizeof
sẽ mang lại 1 cho bool
(các trạng thái chuẩn, mặc dù kích thước của bool
được thực hiện xác định) và 4 cho BOOL
.
Nguồn: Codeguru article
sizeof (BOOL) vẫn là 4 trên máy tính Windows 64 bit. Cô lập chính nó từ việc triển khai kiểu trình biên dịch là lý do các typedef này tồn tại. –
@Hans Đã xóa tham chiếu 64 bit. – luvieere
CẢNH BÁO: sizeof (bool) không được chỉ định trong microsoft C++ và thay đổi từ 4 byte thành 1 byte giữa C++ 4.2 và 5.0 (xem http://msdn.microsoft.com/en-US/en-use/library/tf4dy80a. aspx) – eFloh