gpt4 book ai didi

c++ - 优化行为的差异

转载 作者:行者123 更新时间:2023-11-28 06:03:12 24 4
gpt4 key购买 nike

对于以下程序,我得到不同的结果,这取决于我是否启用了优化。

我期待看到 10 打印出来,但是当我启用优化时,我打印了随机值。

这在 GCC 和 Clang 上都会发生。看起来构造函数正在优化,因为如果我在构造函数中添加输出语句,即使进行了优化,我也会得到预期的结果。有人可以解释一下我错过了什么吗?是未定义的行为吗?

#include <iostream>

using namespace std;

struct wrapper
{
const int &ref;
wrapper(const char &t):ref(t)
{//cout<<""; If I un-comment this statement, I get the expected result
}
};


int main() {
int a=10;
char c=a;
cout<<wrapper(c).ref<<endl;

return 0;
}

最佳答案

这应该是未定义的行为,因为 gcc 说:

prog.cc: In constructor 'wrapper::wrapper(const char&)':
prog.cc:8:33: warning: a temporary bound to 'wrapper::ref' only persists until the constructor exits [-Wextra]
wrapper(const char &t):ref(t)
^

关于c++ - 优化行为的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32878063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com