Re:Subtraction is not comparison
by marvy on Friday December 26, 2014 @03:03AM
(#8798399)
But the only way to account for overflow is to avoid comparison by subtraction.
[ Parent
| on HN ]
You can also do the comparison over larger integers, for example
int cmp(int x, int y) {
return (int) (((long)x-(long)y)>>32);
}In mainstream compilers, even on x64, sizeof(long) == sizeof(int). You need long long instead. Of course, in the general case there's exactly zero guarantee that there even exists an integral type wider than int.
The C99 language standard requires support for long long.
But an implementation where sizeof(int) == sizeof(long) == sizeof(long long) is allowed by the specification.