【发布时间】:2012-04-26 06:54:02
【问题描述】:
我偶然发现了这段代码。
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/文件等)的函数是不是不正确?
【问题讨论】:
-
代码不调用函数——它甚至不操作指向函数的指针。