27 November 2009

c言語.各型の最大値・最小値

cの各型の最大値,最小値はlimits.hとfloat.hにINT_MAXなどといったマクロで定義されています.limits.h内でintやlongなどの整数型のマクロが宣言されていて,float.h内で実数型のマクロが定義されています.

limits.h内では,アーキテクチャに応じて適当なヘッダファイルをインクルードする仕組みになっていて,実際のマクロの定義はそのファイルの中で行われています.例えば手元のmacbookだと,/usr/include/i386/limits.hでINT_MAXなどのマクロが定義されているようです.こんな感じです.

#define SCHAR_MAX       127             /* min value for a signed char */
#define SCHAR_MIN       (-128)          /* max value for a signed char */

#define UCHAR_MAX       255             /* max value for an unsigned char */
#define CHAR_MAX        127             /* max value for a char */
#define CHAR_MIN        (-128)          /* min value for a char */

#define USHRT_MAX       65535           /* max value for an unsigned short */
#define SHRT_MAX        32767           /* max value for a short */
#define SHRT_MIN        (-32768)        /* min value for a short */

#define UINT_MAX        0xffffffff      /* max value for an unsigned int */
#define INT_MAX         2147483647      /* max value for an int */
#define INT_MIN         (-2147483647-1) /* min value for an int */