Я случайно наткнулся на этот кусок кода.
int x(int a){
std::cout<<a<<std::endl;
return a + 1;
}
int main()
{
std::cout<<sizeof(x(20))<<std::endl;
return 0;
}
Я ожидал, что он напечатает 20, а затем 4. Но он просто напечатает 4. Почему так происходит? Разве не неправильно оптимизировать функцию, имеющую побочный эффект (печать в IO/файл и т. д. )?