4 ms·
I'm tempted to suggest that the fixed C/C++ version is still not correct with respect to this issue, namely on architectures where INT_MAX == UINT_MAX. (Or real
by pantaloons 15y ago
I'm tempted to suggest that the fixed C/C++ version is still not correct with respect to this issue, namely on architectures where INT_MAX == UINT_MAX. (Or really INT_MAX <= UINT_MAX < 2 * INT_MAX, which is valid in C99 for INT_MAX >= 65535.)
- caf 15y agoINT_MAX == UINT_MAX is the only valid failing case, because elsewhere in the standard integer types are restricted to pure binary representations. This means that if UINT_MAX is greater than INT_MAX, it must be at least INT_MAX * 2 + 1.
- pantaloons 15y agoThat can't actually be taken for granted, relevant Usenet discussion begins here: http://groups.google.com/group/comp.std.c/browse_thread/thread/6f1c599324bb2c2e/cd31b3e5003c45f9 http://groups.google.com/group/comp.std.c/browse_thread/thre...
- caf 15y agoI concur with Dan Pop's interpretation.