相关疑难解决方法(0)

如果未初始化的变量的值不应该影响表达式的值,它仍然是UB吗?

这是讨论的后续内容,我认为这应该是一个自己的问题.

基本上,这是未定义的结果吗?

int x;
int y = 1 || x;
Run Code Online (Sandbox Code Playgroud)

这里有两个"常识"论点:

  1. 从数学上讲,无论价值是多少x,价值都y应该是1.
  2. 由于短路,x无论如何都从未进行过评估.

但反驳的是,我们有一个表达涉及一个未初始化的变量,所以所有的赌注都是关闭的(理论上).

更一般地说,如果未初始化变量的值不可能影响表达式的结果,那么它是否"安全"?例如:

int x;
int y = x - x;
Run Code Online (Sandbox Code Playgroud)

通常的免责声明:当然,我不是在提倡编写这样的代码.

c initialization undefined-behavior

8
推荐指数
2
解决办法
356
查看次数

标签 统计

c ×1

initialization ×1

undefined-behavior ×1