From: Ullrich von Bassewitz (uz_at_musoftware.de)
Date: 2003-06-18 11:31:33
On Wed, Jun 18, 2003 at 11:22:08AM +0200, Christian Groessler wrote: > Ups, really? > I thought, the only thing the standard requires is > sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long). > > Did I miss something? Yes. The following is from "ISO/IEC 9899:1999 (E), 5.2.4.2.1 Sizes of integer types <limits.h>": ----------------------------------------------------------------------------- The values given below shall be replaced by constant expressions suitable for use in #if preprocessing directives. Moreover, except for CHAR_BIT and MB_LEN_MAX, the following shall be replaced by expressions that have the same type as would an expression that is an object of the corresponding type converted according to the integer promotions. Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign. [...] - minimum value for an object of type short int SHRT_MIN -32767 // -(2^15 - 1) - maximum value for an object of type short int SHRT_MAX +32767 // 2^15 - 1 - maximum value for an object of type unsigned short int USHRT_MAX 65535 // 2^16 - 1 - minimum value for an object of type int INT_MIN -32767 // -(2^15 - 1) - maximum value for an object of type int INT_MAX +32767 // 2^15 - 1 - maximum value for an object of type unsigned int UINT_MAX 65535 // 2^16 - 1 - minimum value for an object of type long int LONG_MIN -2147483647 // -(2^31 - 1) - maximum value for an object of type long int LONG_MAX +2147483647 // 2^31 - 1 - maximum value for an object of type unsigned long int ULONG_MAX 4294967295 // 2^32 - 1 ----------------------------------------------------------------------------- This means that any compiler using 8 bit ints, 24 bits longs or similar is not standards compliant. It does also mean, that portable code can rely on certain ranges: A variable used to store values between 0 and 100000 needs to be a long, but you can rely on the fact that this will work in every C implementation. Regards Uz -- Ullrich von Bassewitz uz_at_musoftware.de ---------------------------------------------------------------------- To unsubscribe from the list send mail to majordomo_at_musoftware.de with the string "unsubscribe cc65" in the body(!) of the mail.
This archive was generated by hypermail 2.1.3 : 2003-06-18 11:31:41 CEST