私はたまたまこのコードに出くわしました。
int x(int a){
std::cout<<a<<std::endl;
return a + 1;
}
int main()
{
std::cout<<sizeof(x(20))<<std::endl;
return 0;
}
私はそれが4に続いて20を印刷することを期待しました。しかしそれは4を印刷するだけです。なぜそうなるのですか?副作用(IO /ファイルへの出力など)がある関数を最適化するのは正しくありませんか?