Programmer BS Blog

 by BSPFP

Textile 포매터 문법 요약

글 보관함

Total131049
Today169
Yesterday432

if (!expr)

이렇게 하면 표현식 expr이 참이 아닐 때...라고 배웠습니다.

그럼

if (!!expr)

이건 어떤 의미일까요?
단순히 표현식 expr이 참일 때... 일까요?
물론 참일 때이죠...

그럼

if (expr)

if (!!expr)

이것은 같은 결과일까요?
같은 결과가 아니랍니다. 최소한 Visual C++에서는 말이죠...
(다른 컴파일러도 마찬가지 일 것 같습니다.)

Visual Studio 2010의 crtdbg.h 헤더 파일에 보면 아래와 같이 되어 있습니다.
여기에 설명이 나와 있네요.

/* Asserts */
/* We use !! below to ensure that any overloaded operators used to evaluate expr do not end up at operator || */ #define _ASSERT_EXPR(expr, msg) \ (void) ((!!(expr)) || \ (1 != _CrtDbgReportW(_CRT_ASSERT, _CRT_WIDE(__FILE__), LINE, NULL, msg)) || \ (_CrtDbgBreak(), 0))

이런 것은 한번도 고려하지 못했는데... 물론 이런 게 필요한 경우도 없었구요.
시스템 라이브러리를 만드는 사람들은 저런 것도 고민해야 되니 참 머리 아프겠어요.

Trackback Address :: http://bspfp.pe.kr/trackback/318

PREV 1 ... 8 9 10 11 12 13 14 15 16 ... 301 NEXT