4 ms·
Your compiler will take care of that. Leave the division for the humans to read.
by jws 5y ago
Your compiler will take care of that. Leave the division for the humans to read.
- xaduha 5y agoI'm in a camp that thinks compilers should also take care of the original unsigned average(unsigned a, unsigned b) { return (a + b) / 2; } At the end of the day it's all just text. There are plenty of steps before any of it does anything at all.
- Dylan16807 5y agoWhat should happen if you store "a+b" in an intermediate value?
- xaduha 5y agoIf it is used and there's no way around it, then show a compilation warning that there might be overflow. If it can be resolved without being directly used, then it should be optimized away.
- jws 5y agoFor C at least, the spec says that unsigned addition is modulo 2^64 (or 32 or 16 or whatever) so, imagine you had an 8 bit unsigned, 128+128 gives you 0. Divided by 2 is 0. That’s the right answer by the language specification. The trick is to get 128.