Tôi vừa tham gia một dự án với cơ sở mã khá lớn.
Tôi chủ yếu giao dịch với C ++ và rất nhiều mã họ viết sử dụng phủ định kép cho logic boolean của họ.
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
Tôi biết những người này là những lập trình viên thông minh, rõ ràng họ không làm điều này một cách tình cờ.
Tôi không phải là chuyên gia C ++ dày dạn, tôi chỉ đoán tại sao họ làm điều này là họ muốn làm cho hoàn toàn tích cực rằng giá trị được đánh giá là đại diện boolean thực tế. Vì vậy, họ phủ nhận nó, sau đó phủ nhận điều đó một lần nữa để đưa nó trở lại giá trị boolean thực tế của nó.
Điều này có đúng không, hay tôi đang thiếu thứ gì đó?