largest int on different platforms

Hi Ed,
Largest signed `long long' is a bit pattern where all bits are set
except the most significant bit:

#define LL_MAX \
   ((long long)((1ULL<<(8*sizeof(long long)-1))-1))

Largest unsigned long long is all bits set. In other words, the
stuff above bit-ORed with the most significant bit:

#define ULL_MAX \
   ((unsigned long long)LL_MAX | (1ULL<<(8*sizeof(long long)-1)))

This will work for any size of these datatypes as long as
sizeof(unsigned long long)==sizeof(long long).

You could also use the constants LLONG_MAX, LLONG_MIN, and ULLONG_MAX
from <limits.h>.

>>>>> "Ed" == Ed Hartnett <ed@xxxxxxxxxxxxxxxx> writes:
Ed> Howdy all!

Ed> What is the maximum long long on different platforms. Anyone know?

Ed> In my header I have:

Ed> #define X_INT64_MAX   ((nc_int64)9223372036854775804)

Ed> This gives me an error on AIX:

Ed> "nc4hdf.c", line 2558.31: 1506-207 (W) Integer constant
Ed> 9223372036854775804 out of range.

Ed> Is there some standard way of determining what the largest signed and
Ed> unsigned 64-bit int is?

Ed> I figure one of you HDF5 people must know, since you have probably had
Ed> the same problems.

Ed> Thanks!

Ed> -- 
Ed> Ed Hartnett  -- ed@xxxxxxxxxxxxxxxx

Robb Matzke L-159   | Ph:  812-967-6325  | I/O, I/O, it's off to disk we go,
Lawrence Livermore  | Fax: 812-967-6326  | A gigabyte to read or write,
National Laboratory | Hrs: 3am-11am PDT  | I/O, I/O.