Mặc dù đã có câu trả lời tốt, tôi nghĩ rằng cách tiếp cận này có thể còn trực quan hơn đối với người mới biết về đại số Boolean sau đó để đánh giá một bảng chân lý.
Điều đầu tiên bạn muốn làm là nhìn, trong những điều kiện bạn muốn thực thi C. Đây là trường hợp khi (a & b)
. Còn khi nào !a
. Vì vậy, bạn có (a & b) | !a
.
Nếu bạn muốn giảm thiểu bạn có thể tiếp tục. Giống như trong số học "bình thường", bạn có thể nhân ra.
(a & b) | !a = (a | !a) & (b | !a)
. một | ! a luôn luôn đúng, vì vậy bạn chỉ có thể gạch bỏ nó, điều này khiến bạn có kết quả tối thiểu : b | !a
. Trong trường hợp thứ tự tạo ra sự khác biệt, bởi vì bạn chỉ muốn kiểm tra b nếu! A là đúng (ví dụ khi! A là kiểm tra nullpulum và b là một thao tác trên con trỏ như @LordFarquaad đã chỉ ra trong nhận xét của anh ấy), bạn có thể muốn chuyển đổi hai.
Trường hợp khác (/ * ... * /) sẽ luôn được thực thi khi c không được thực thi, vì vậy chúng ta chỉ có thể đặt nó trong trường hợp khác.
Một điều đáng nói nữa là nó có thể có ý nghĩa trong việc đưa hành động c vào một phương thức.
Mà để lại cho chúng tôi mã sau đây:
if (!A || B)
{
doActionC() // execute method which does action C
}
else
{
/* ... */ // what ever happens here, you might want to put it into a method, too.
}
Bằng cách này, bạn cũng có thể giảm thiểu các thuật ngữ với nhiều toán hạng hơn, nhanh chóng trở nên xấu xí với các bảng chân lý. Một cách tiếp cận tốt khác là bản đồ Karnaugh. Nhưng tôi sẽ không đi sâu vào vấn đề này ngay bây giờ.