성능 향상은 잘 모르겠지만, !!는 보통 true/false를 판단할 때 씁니다.
예전 C에는 true/false를 나타내는 상수가 없고 0은 false 나머지는 전부 true가 인데, 값이 중요치 않고 참거짓만 중요한 경우에 true끼리의 비교가 곤란합니다.
int b1 = 1;
int b2 = 2;
이렇게 있다고 했을 때, b1 과 b2의 진리값만을 비교하고 싶을 때, b1도 true고 b2도 true지만 b1 == b2는 거짓이 되버립니다.
여기서 논리 부정인 !를 두번 쓰면 !(!b1) -> !(0) -> 1 가 되기 때문에 !!b1 == !!b2가 됩니다.
양쪽다 false인 경우는 문제될일이 없구요.
성능 향상은 잘 모르겠지만, !!는 보통
성능 향상은 잘 모르겠지만, !!는 보통 true/false를 판단할 때 씁니다.
예전 C에는 true/false를 나타내는 상수가 없고 0은 false 나머지는 전부 true가 인데, 값이 중요치 않고 참거짓만 중요한 경우에 true끼리의 비교가 곤란합니다.
int b1 = 1;
int b2 = 2;
이렇게 있다고 했을 때, b1 과 b2의 진리값만을 비교하고 싶을 때, b1도 true고 b2도 true지만 b1 == b2는 거짓이 되버립니다.
여기서 논리 부정인 !를 두번 쓰면 !(!b1) -> !(0) -> 1 가 되기 때문에 !!b1 == !!b2가 됩니다.
양쪽다 false인 경우는 문제될일이 없구요.
아...
생각해보니 그러네요~!
성능향상의 경우 저 진리값들의 비교를
if((b1!=0 && b2!=0) || (b1==0 && b2==0))
이렇게 쓰는거보다
if(!!b1 == !!b2)
이렇게 쓰는게 더 좋기 때문 아닐까요?
컴파일결과가 어떻게될지 잘 모르겠지만...;
아무튼 감사합니다~
자기실력이 좋다고 느껴지는건 공부를 안하고 있다는 신호.
오호 이거 저도 궁금했던 것이예요.. 그래서 그렇게
오호 이거 저도 궁금했던 것이예요..
그래서 그렇게 하는 것이군요.. ^^; 감사합니다.
Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.
좋은 정보 감사드립니다 :)
세상에 그냥 있는 것은 없는 셈이군요.. ㅎㅎ
句日新, 日新 日新 又日新.
두 변수의 논리값이 같은지 다른지는 그냥 XOR로
두 변수의 논리값이 같은지 다른지는 그냥 XOR로 비교하면 되지 않나요? ^^
오호~
좋은 정보 감사. ^^
www.gilgil.net
오~ 좋은정보 감사합니다. 코드를 좀더 깔끔하게 짤
오~ 좋은정보 감사합니다.
코드를 좀더 깔끔하게 짤 수 있겠네요^^
댓글 달기