вызов sizeof при вызове функции пропускает фактический вызов функции!}

Я случайно наткнулся на этот кусок кода.

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/файл и т. д. )?

7
задан Chethan Ravindranath 26 April 2012 в 06:54
поделиться