How to #define the lowest negative number?

Technical Note 60149

Targets:
ARM

Component:
Compiler

Updated:
11/18/2010 4:08 PM

Introduction

This Technical Note answers the question: 'How to #define the lowest negative number, without getting a compiler warning?'

It applies to the IAR C/C++ Compiler for ARM and some other IAR C/C++ Compilers.

Problem

When making a #define with the lowest possible value the IAR C/C++ Compiler issues a warning and changes sign on the value.

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

Example (32 bit integer)

The string of...
-2147483648L

...is interpreted by the Compiler as two parts, first the...

-

..is interpreted as the "minus operator", and secondly...

2147483648L

...is interpreted as a constant. And that constant is larger than LONG_MAX.

Solution

#define MIN_VALUE (-2147483647L - 1)

All product names are trademarks or registered trademarks of their respective owners.

Related Tech Notes

© IAR Systems 1995-2016 - All rights reserved.