IT 이모저모

!!를 사용하는 이유

exien 2018. 2. 21. 23:45
BOOL형의 불리언변수를 사용하게 되면 BOOL변수에 

4바이트의 int형 값이 들어 갈 수 있게 된다.

다음과 같은 함수가 있을때

BOOL g_bValue = FALSE;

void SetValue (BOOL value)
{
g_bValue = value;
}

void Func ()
{
SetValue(123);
if (g_bValue == TRUE) {}
}

다음과 같이 실수로 123을 넘겨 줬을 경우 Func의 if문은 항상 실패를 하게 된다.

이때 사용자는 값이 있으므로 TRUE가 되겠지 라는 생각을 할 수 도 있게 된다.

void SetValue (BOOL value)
{
g_bValue = !!value;
}

SetValue를 위와같이 만들었다면 0이 아닌값들은 다 TRUE가 되므로

123을 넘겨줘도 올바른 결과를 만들수 있다.

결론적으로 int형 값이 있으면 TRUE 0이면 FALSE로 써야 할때

사용하면 된다.



'IT 이모저모' 카테고리의 다른 글

boost 64 비트 빌드하기  (1) 2018.02.21
std::numeric_limits 사용시 에러  (0) 2018.02.21
컴파일 시간에 스트링 해쉬 구하기  (0) 2018.02.21
Debug view  (0) 2018.02.21
__if_exists, __if_not_exists, __super  (0) 2018.02.21