Оптимизация вообще не должна влиять на результат программы (кроме размера кода и времени выполнения, конечно). Когда они это делают, обычно это потому, что вы полагаетесь на неопределенное поведение.
Никакой здравомыслящий компилятор не заменит (num/100)*100
на num
. Оптимизирующие компиляторы намного, далеко, намного умнее этого. Компилятор может оптимизировать его до num - (num % 100)
, если это разумное решение для целевой платформы.
Я всегда говорю: «Чем проще ваш код для понимания компилятором, тем легче компилятору применить наиболее подходящую оптимизацию». И знаешь, что? Обычно код, который легко понять компилятору, также легче понять людям.