2.2.6 Kiểu bool

George Boole (1815 –1864) là một nhà toán học người Anh, nhà triết học và nhà logic học và chúng tôi đang nói về anh ta vì một lý do rất quan trọng. Một số thành tựu quan trọng nhất của ông là về đại số logic. Đại số logic không hoạt động trên con số, mà chỉ dựa trên hai giá trị, và không sử các công thức số học tiêu chuẩn như phép cộng và phép nhân… mà sử dụng phép hội (conjunction), phép tuyển (disjunction)phủ định (negation).

Trên thực tế thì hầu hết máy tính hiện đại đều được xây dựng bằng cách sử dụng định lý của Boole, có thể nói không cường điệu rằng Boole thực sự là một trong những người sáng lập của IT.

Có một kiểu dữ liệu trong C++ được đặt tên để tưởng nhớ George Boole – đó chính là kiểu bool .

Nó là một kiểu dữ liệu rất thú vị. Các biến của kiểu này có khả năng lưu trữ chỉ hai giá trị khác biệt: true và false. Lưu ý: tất cả các từ mới (bool, truefalse) đều là từ khóa. Đừng quên điều đó.

Hãy xem ví dụ bên phải →

bool developer_is_hungry = false;

Chúng tôi đã khai báo một biến. Tên của nó cũng như giá trị của nó đã rõ ràng và không cần comment gì thêm. Có rất nhiều bối cảnh nơi mà biến này có thể hữu ích. Một trong số đó có thể là như sau đây:

if (developer_is_hungry) {

    HaveLunch();

    developer_is_hungry =! developer_is_hungry;
}

Dấu chấm than được sử dụng trong phép gán là một toán tử phủ định. Nó là một toán tử tiền tố môt ngôi (unary prefix operator) làm thay đổi giá trị logic của đối số của nó: true sẽ trở thành false và ngược lại.

Thực ra, loại bool là chỉ là một biến thể rất đặc biệt của kiểu int. Nó là rất ngắn (biến loại này chiếm chỉ 8 bit, đó là vẫn còn quá nhiều, bởi vì một bit là đủ rồi). Nó hoạt động như một int bên trong biểu thức (true tương đương với 1 trong false tương đương với 0).