bạn có thể quen thuộc với liệt kê
Sơ đồ mặt nạ bit, ví dụ:
enum Cờ {
CỜ1 = 0x1,
CỜ2 = 0x2,
CỜ3 = 0x4,
CỜ4 = 0x8,
KHÔNG CÓ_CỜ = 0,
TẤT CẢ_CỜ = CỜ1 | CỜ2 | CỜ3 | CỜ4
};
f(CỜ2 | CỜ4);
Tôi đã thấy rất nhiều mã sau đó kiểm tra một phần nhất định trong mặt nạ, như
nếu ((mặt nạ & FLAG3) == FLAG3)
Nhưng điều đó không tương đương với điều này sao?
nếu (mặt nạ & FLAG3)
Có lý do nào để sử dụng phiên bản đầu tiên không? Theo tôi, phiên bản ngắn thứ hai rõ ràng hơn.
Có thể là một thói quen còn sót lại của các lập trình viên C, những người tin rằng các giá trị chân lý nên được chuyển đổi thành 1
? (Mặc dù ở đó, phiên bản dài hơn sẽ tốt hơn khi gán hoặc trở lại
câu lệnh có ý nghĩa hơn so với kiểm tra câu lệnh có điều kiện. )
kết cấu nếu ((mặt nạ & FLAG3) == FLAG3)
Thử nghiệm trong FLAG3 tất cả Liệu bit có tồn tại trong mặt nạ hay không; nếu (mặt nạ & FLAG3)
Bài kiểm tra bất kì tồn tại.
Nếu bạn biết rằng FLAG3 có tập hợp chính xác 1 bit thì chúng tương đương nhau, nhưng nếu bạn có thể xác định các điều kiện phức hợp, sẽ rõ ràng hơn nếu bạn có thói quen kiểm tra rõ ràng tất cả các bit, nếu đó là ý bạn.
Tôi là một lập trình viên xuất sắc, rất giỏi!