thể trùng lặp:
Double Negation in C++ codeCách sử dụng "!!" là gì? (phủ nhận hai lần)?
Hãy nói rằng:
bool var = !!true;
Nó sẽ gán "true" vào biến. Dường như vô dụng, nhưng tôi đã nhìn vào định nghĩa của Visual Studio về "khẳng định", và nó là:
#define assert(_Expression) (void)((!!(_Expression)) || (_wassert(_CRT_WIDE(#_Expression), _CRT_WIDE(__FILE__), __LINE__), 0))
Tại sao nó phủ nhận "_Expression" hai lần?
Tôi tự hỏi rằng họ muốn ép buộc "!" toán tử được gọi (trong trường hợp nó bị quá tải), nhưng điều đó dường như không phải là một lý do chính đáng.
Câu hỏi hay, +1 – jlledom
http://stackoverflow.com/questions/248693/double-negation-in-c-code – cnicutar
http://stackoverflow.com/questions/1310344/why-use-when-converting -int-to-bool – cnicutar