[Zlib-devel] crc32 big/little endian

Vincent Torri vtorri at univ-evry.fr
Thu Apr 22 03:24:53 EDT 2010



On Thu, 22 Apr 2010, Mark Adler wrote:

> On Apr 21, 2010, at 11:53 PM, Vincent Torri wrote:
>> C ANSI (C89) specifies:
>>
>> sizeof(char) = 1
>>
>> sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
>>
>> and no change with signed or unsigned
>>
>> that's all.
>
> No, that's not all.  Minimum sizes are specified in C89.  See below: "Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown".  Also K&R 2nd edition (the ANSI C edition) says basically the same thing: "longs are at least 32 bits".

ha right:

http://c-faq.com/decl/inttypes.html

Vincent Torri

>
> I can't find my K&R 1st edition to see what it says about that.
>
> In any case the constraints are bits(char) <= bits(short) <= bits(int) <= bits(long), 8 <= bits(char), 16 <= bits(short), and 32 <= bits(long).  zlib makes only those assumptions about char, short, int, and long (and their unsigned counterparts).
>
> Mark
>
>
>
> 2.2.4.2 Numerical limits
>
>   A conforming implementation shall document all the limits specified
> in this section, which shall be specified in the headers <limits.h>
> and <float.h> .
>
> "Sizes of integral types <limits.h>"
>
>   The values given below shall be replaced by constant expressions
> suitable for use in #if preprocessing directives.  Their
> implementation-defined values shall be equal or greater in magnitude
> (absolute value) to those shown, with the same sign.
>
> * maximum number of bits for smallest object that is not a bit-field (byte)
> CHAR_BIT                         8
>
> * minimum value for an object of type signed char
> SCHAR_MIN                     -127
>
> * maximum value for an object of type signed char
> SCHAR_MAX                     +127
>
> * maximum value for an object of type unsigned char
> UCHAR_MAX                      255
>
> * minimum value for an object of type char
> CHAR_MIN                     see below
>
> * maximum value for an object of type char
> CHAR_MAX                     see below
>
> * maximum number of bytes in a multibyte character, for any supported locale
> MB_LEN_MAX                       1
>
> * minimum value for an object of type short int
> SHRT_MIN                    -32767
>
> * maximum value for an object of type short int
> SHRT_MAX                    +32767
>
> * maximum value for an object of type unsigned short int
> USHRT_MAX                    65535
>
> * minimum value for an object of type int
> INT_MIN                     -32767
>
> * maximum value for an object of type int
> INT_MAX                     +32767
>
> * maximum value for an object of type unsigned int
> UINT_MAX                     65535
>
> * minimum value for an object of type long int
> LONG_MIN               -2147483647
>
> * maximum value for an object of type long int
> LONG_MAX               +2147483647
>
> * maximum value for an object of type unsigned long int
> ULONG_MAX               4294967295
>
>
>
> _______________________________________________
> Zlib-devel mailing list
> Zlib-devel at madler.net
> http://mail.madler.net/mailman/listinfo/zlib-devel_madler.net
>
>




More information about the Zlib-devel mailing list