Câu trả lời của Charles Bailey là đúng. Cách diễn đạt chính xác từ tiêu chuẩn C ++ là (§4.7 / 4): "Nếu loại nguồn là bool, giá trị false được chuyển thành 0 và giá trị true được chuyển thành một."
Chỉnh sửa: Tôi thấy anh ấy cũng đã thêm tài liệu tham khảo - Tôi sẽ xóa nó ngay thôi, nếu tôi không bị phân tâm và quên ...
Chỉnh sửa2: Sau đó, một lần nữa, có lẽ đáng chú ý là mặc dù bản thân các giá trị Boolean luôn chuyển đổi thành 0 hoặc một, một số hàm (đặc biệt là từ thư viện chuẩn C) trả về các giá trị "về cơ bản là Boolean", nhưng được biểu diễn dưới dạng int
s thông thường chỉ yêu cầu bằng 0 để biểu thị sai hoặc khác 0 để cho biết đúng. Ví dụ, hàm is * trong<ctype.h>
chỉ yêu cầu 0 hoặc khác 0, không nhất thiết là 0 hoặc 1.
Nếu bạn truyền giá trị đó thành bool
, số 0 sẽ chuyển thành false và khác 0 thành true (như bạn mong đợi).