[이 질문은 관련이 있지만 this one과 동일하지 않습니다.]입니다 !! C에서 bool로 변환하는 안전한 방법 + +?
내가 부울 식으로 특정 유형의 값을 사용하려고하면, 내가 경고를 얻을. 경고를 억제하기보다는 때때로 삼항 연산자 (?:
)를 사용하여 bool로 변환합니다. 연산자가 아닌 두 개 (!!
)를 사용하면 같은 효과가있는 것 같습니다. 더 - 더블없는 기술은 정말 같은 일을
typedef long T; // similar warning with void * or double
T t = 0;
bool b = t; // performance warning: forcing 'long' value to 'bool'
b = t ? true : false; // ok
b = !!t; // any different?
그래서 않습니다 여기
은 무슨 뜻입니까? 그것은 삼중 기법보다 더 안전합니까? 이 기술은 비 필수 유형 (예 : void *
또는 double
T
)으로 동일하게 안전합니까?
!!t
이 좋은 스타일인지 묻지 않습니다. 의미 적으로 t ? true : false
과 다른지 묻습니다.
내가 좋아하는 줄 참조 "B = t 진실은? 거짓;" 나는 항상 그것을 "b = t"라는 줄로 바꾸려고한다. bool에 대한 암시 적 캐스트가 이미 있습니다. 왜 의미가 의미가 있습니까? –
Q가 말하기를, b = t는 주저에 따라 얼마나 많은 사람들이'!!'에 반대하는지에 대한 경고를주기 때문에 – jwfearn
입니다. double negation은 * 자바 스크립트에서 * 숙어가되는 캐스팅 - 투 - 부울 (bubi-to-bool) 차량이며, javascripters가 그것을 얻는다면 C++ 사용자도 기대할 것입니다. –