thể trùng lặp:
Double Negation in C++ code.Mục đích của âm kép trong định nghĩa macro, như (!! (expr)) là gì?
Tôi đang đọc một cơ sở mã, và tìm thấy một cái gì đó như thế này:
#define uassert(msgid, msg, expr) (void)((!!(expr))||(uasserted(msgid, msg), 0))
Tôi không thể hiểu tại sao (!! (expr)) được sử dụng thay vì một đơn (expr). Dù sao, một tiêu cực đôi có nghĩa là tích cực, phải không? Tui bỏ lỡ điều gì vậy?
Tôi thậm chí không thể tìm ra mục đích của mã này là gì! ;) – BlackBear
Giống như R nói, nó hoàn toàn vô dụng ở đây. – GManNickG
nó dư thừa trong trường hợp này như bản thân bạn đã chỉ ra một cách chính xác. Có lẽ nó chỉ được thêm vào để tránh một số cảnh báo trình biên dịch. –