#define을 통해 가장 작은 음수표현하기

기술노트 60149

아키텍처:

ARM

컴포넌트:

compiler

업데이트:

2021-05-11 오전 4:07

소개

본 기술 노트는 '컴파일러 경고 메시지를 받지않고 #define을 통해 가장 작은 음수를 표현하는 방법'에 대해 설명합니다.

IAR C/C++ Compiler for ARM와 기타 일부 IAR C/C++ 컴파일러에 적용됩니다.

문제

가능한 가장 낮은 값을 #define을 통해 사용할때, IAR C/C++ 컴파일러는 경고 메시지를 발생시키고 값의 부호를 변경합니다.

#define MIN_VALUE (-2147483648L)
signed long lValue;
lValue = (MIN_VALUE + 1);

예제 (32비트형 정수)

다음의 문자열은...
-2147483648L

...컴파일러에 의해 두 부분으로 해석됩니다, 그 첫 번째는...

-

.."뺄셈 연산자"로 해석되며, 다음 두 번째는...

2147483648L

...인 상수로 해석됩니다. 또한 위의 상수는 LONG_MAX 보다 크게 됩니다.

해결방안

#define MIN_VALUE (-2147483647L - 1)

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.