3 ms·
But the only way to account for overflow is to avoid comparison by subtraction.
by marvy 12y ago
But the only way to account for overflow is to avoid comparison by subtraction.
- arielby 12y agoYou can also do the comparison over larger integers, for example int cmp(int x, int y) { return (int) (((long)x-(long)y)>>32); }
- Sharlin 12y agoIn 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.
- TwoBit 12y agoThe C99 language standard requires support for long long.
- dezgeg 12y agoBut an implementation where sizeof(int) == sizeof(long) == sizeof(long long) is allowed by the specification.
- marvy 12y agoOn a (slightly) more practical level: there exists some largest integer type. You may someday need to sort it. If you want your sort to always work, you can't afford to overflow.