I'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.