thể trùng lặp:
Double Negation in C++ codeĐang sử dụng '!!' trong thực hành tốt C/C++ và nó có phổ biến không?
Theo như tôi biết, không có C/C++ sách hướng dẫn hoặc hướng dẫn sử dụng đề cập đến kỹ thuật này. Có lẽ vì nó chỉ là một điều nhỏ bé, không đáng nói đến.
Tôi sử dụng nó vì C/C++ trộn kiểu bool với int, long, pointer, double etc ... với nhau. Nó rất phổ biến để cần phải chuyển đổi một bool không thành bool. Nó không an toàn để sử dụng (bool) giá trị để làm điều đó, vì vậy tôi sử dụng !!
để làm điều đó.
Ví dụ:
bool bValue = !!otherValue;
Tôi chưa từng nghe về bất kỳ sự cố nào với nó. – chris
"Không an toàn để sử dụng (bool) giá trị để làm điều đó" Tại sao? –
Vấn đề này đã được thảo luận tại đây: http://stackoverflow.com/questions/248693/double-negation-in-c-code và http://stackoverflow.com/questions/8617090/double-negation-in-c- is-it-guaranteed-to-return-0-1 – Juliano