相关疑难解决方法(0)

为什么返回未初始化的值被视为未定义的行为?

在阅读本文时,我看到了一个我不了解的UB,希望您能澄清一下

size_t f(int x)
{
    size_t a;
    if(x) // either x nonzero or UB
        a = 42;
    return a; 
}
Run Code Online (Sandbox Code Playgroud)

我猜UB是由于a没有初始化的值,但这不是它定义的行为吗?意思是,无论f(0)变量a是什么, 都将返回其所保存的值(我认为这类似于rand())。我们是否必须知道代码片段返回的值使代码具有明确定义的行为?

c initialization undefined-behavior

3
推荐指数
1
解决办法
127
查看次数

标签 统计

c ×1

initialization ×1

undefined-behavior ×1