在函数调用上调用sizeof会跳过实际调用函数!}

Che*_*ath 7 c++ sizeof

我碰巧偶然发现了这段代码.

int x(int a){
    std::cout<<a<<std::endl;
    return a + 1;
}

int main()
{
    std::cout<<sizeof(x(20))<<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我预计它打印20跟随4.但它只是打印4.为什么会这样?优化函数是不正确的,有副作用(打印到IO /文件等)?

Cat*_*lus 15

sizeof 是一个编译时运算符,永远不会计算操作数.

  • 更重要的是,语言标准明确表示`sizeof`的操作数未被评估.(这在一些元编程技术中非常重要,其中"被调用"函数甚至不存在.) (3认同)