/* one-complement and signed magnitude just as well. Anyone having a */
/* platform to test this on? */
errno = 0;
-#if INTMAX_MAX == 0x7fffffffffffffffLL
+#if INTMAX_MAX >> 62 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtoimax( "9223372036854775807", NULL, 0 ) == INTMAX_MAX );
TESTCASE( errno == 0 );
TESTCASE( strtoimax( "-9223372036854775809", NULL, 0 ) == INTMAX_MIN );
TESTCASE( errno == ERANGE );
/* TODO: test "odd" overflow, i.e. base is not power of two */
-#elif LLONG_MAX == 0x7fffffffffffffffffffffffffffffffLL
+#elif LLONG_MAX >> 126 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtoimax( "170141183460469231731687303715884105728", NULL, 0 ) == INTMAX_MAX );
TESTCASE( errno == 0 );
TESTCASE( strtoumax( overflow, &endptr, 0 ) == 0 );
TESTCASE( endptr == overflow );
errno = 0;
-#if UINTMAX_MAX == 0xffffffffffffffffLL
+/* uintmax_t -> long long -> 64 bit */
+#if UINTMAX_MAX >> 63 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtoumax( "18446744073709551615", NULL, 0 ) == UINTMAX_MAX );
TESTCASE( errno == 0 );
TESTCASE( strtoumax( "18446744073709551616", NULL, 0 ) == UINTMAX_MAX );
TESTCASE( errno == ERANGE );
/* TODO: test "odd" overflow, i.e. base is not power of two */
-#elif UINTMAX_MAX == 0xffffffffffffffffffffffffffffffffLL
+/* uintmax_t -> long long -> 128 bit */
+#elif UINTMAX_MAX >> 127 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtoumax( "340282366920938463463374607431768211455", NULL, 0 ) == UINTMAX_MAX );
TESTCASE( errno == 0 );
{
-#if UINT_MAX / 0xffffu == 1
+#if UINT_MAX >> 15 == 1
#define _PDCLIB_UINT_DIG 5
#define _PDCLIB_INT_DIG 5
#define _PDCLIB_INT_HEXDIG FFFF
#define _PDCLIB_INT_hexdig ffff
#define _PDCLIB_INT_OCTDIG 177777
-#elif UINT_MAX / 0xffffffffu == 1
+#elif UINT_MAX >> 31 == 1
#define _PDCLIB_UINT_DIG 10
#define _PDCLIB_INT_DIG 10
#define _PDCLIB_INT_HEXDIG FFFFFFFF
#define _PDCLIB_INT_hexdig ffffffff
#define _PDCLIB_INT_OCTDIG 37777777777
-#elif UINT_MAX / 0xffffffffffffffffu == 1
+#elif UINT_MAX >> 63 == 1
#define _PDCLIB_UINT_DIG 20
#define _PDCLIB_INT_DIG 19
#define _PDCLIB_INT_HEXDIG FFFFFFFFFFFFFFFF
#error Unsupported width of 'int' (neither 16, 32, nor 64 bit).
#endif
-#if ULONG_MAX / 0xfffffffful == 1
+#if ULONG_MAX >> 31 == 1
#define _PDCLIB_ULONG_DIG 10
#define _PDCLIB_LONG_DIG 10
-#elif ULONG_MAX / 0xfffffffffffffffful == 1
+#elif ULONG_MAX >> 63 == 1
#define _PDCLIB_ULONG_DIG 20
#define _PDCLIB_LONG_DIG 19
#else
#error Unsupported width of 'long' (neither 32 nor 64 bit).
#endif
-#if ULLONG_MAX / 0xffffffffffffffffull == 1
+#if ULLONG_MAX >> 63 == 1
#define _PDCLIB_ULLONG_DIG 20
#define _PDCLIB_LLONG_DIG 19
-#elif ULLONG_MAX / 0xffffffffffffffffffffffffffffffffull == 1
+#elif ULLONG_MAX >> 127 == 1
#define _PDCLIB_ULLONG_DIG 38
#define _PDCLIB_LLONG_DIG 38
#else
/* for one-complement and signed magnitude just as well. Anyone having */
/* a platform to test this on? */
errno = 0;
-#if LONG_MAX == 0x7fffffffL
+#if LONG_MAX >> 30 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtol( "2147483647", NULL, 0 ) == 0x7fffffff );
TESTCASE( errno == 0 );
TESTCASE( strtol( "-2147483649", NULL, 0 ) == LONG_MIN );
TESTCASE( errno == ERANGE );
/* TODO: test "odd" overflow, i.e. base is not power of two */
-#elif LONG_MAX == 0x7fffffffffffffffL
+#elif LONG_MAX >> 62 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtol( "9223372036854775807", NULL, 0 ) == 0x7fffffffffffffff );
TESTCASE( errno == 0 );
/* for one-complement and signed magnitude just as well. Anyone having */
/* a platform to test this on? */
errno = 0;
-#if LLONG_MAX == 0x7fffffffffffffffLL
+#if LLONG_MAX >> 62 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtoll( "9223372036854775807", NULL, 0 ) == 0x7fffffffffffffff );
TESTCASE( errno == 0 );
TESTCASE( strtoll( "-9223372036854775809", NULL, 0 ) == LLONG_MIN );
TESTCASE( errno == ERANGE );
/* TODO: test "odd" overflow, i.e. base is not power of two */
-#elif LLONG_MAX == 0x7fffffffffffffffffffffffffffffffLL
+#elif LLONG_MAX >> 126 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtoll( "170141183460469231731687303715884105728", NULL, 0 ) == 0x7fffffffffffffffffffffffffffffff );
TESTCASE( errno == 0 );
/* for one-complement and signed magnitude just as well. Anyone having */
/* a platform to test this on? */
errno = 0;
-#if ULONG_MAX == 0xffffffffL
+/* long -> 32 bit */
+#if ULONG_MAX >> 31 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtoul( "4294967295", NULL, 0 ) == ULONG_MAX );
TESTCASE( errno == 0 );
TESTCASE( strtoul( "4294967296", NULL, 0 ) == ULONG_MAX );
TESTCASE( errno == ERANGE );
/* TODO: test "odd" overflow, i.e. base is not power of two */
-#elif ULONG_MAX == 0xffffffffffffffffL
+/* long -> 64 bit */
+#elif ULONG_MAX >> 63 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtoul( "18446744073709551615", NULL, 0 ) == ULONG_MAX );
TESTCASE( errno == 0 );
TESTCASE( strtoull( overflow, &endptr, 0 ) == 0 );
TESTCASE( endptr == overflow );
errno = 0;
-#if ULLONG_MAX == 0xffffffffffffffffLL
+/* long long -> 64 bit */
+#if ULLONG_MAX >> 63 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtoull( "18446744073709551615", NULL, 0 ) == ULLONG_MAX );
TESTCASE( errno == 0 );
TESTCASE( strtoull( "18446744073709551616", NULL, 0 ) == ULLONG_MAX );
TESTCASE( errno == ERANGE );
/* TODO: test "odd" overflow, i.e. base is not power of two */
-#elif ULLONG_MAX == 0xffffffffffffffffffffffffffffffffLL
+/* long long -> 128 bit */
+#elif ULLONG_MAX >> 127 == 1
/* testing "even" overflow, i.e. base is power of two */
TESTCASE( strtoull( "340282366920938463463374607431768211455", NULL, 0 ) == ULLONG_MAX );
TESTCASE( errno == 0 );