Оптимизируют ли компиляторы (в частности Visual C++ 6.0) такой код:
if (f(z))
x = y + f(z);
или есть смысл заменять его на
if (tmp = f(z))
x = y + tmp;
Наверное не оптимизирует, так как теоретически функция может выдавать разные значения при одном и том же аргументе. Придётся в ручную это делать?