gpt4 book ai didi

c++ - 将相同的值分配给 const 变量会导致 C++ 中的 UB 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 15:12:00 24 4
gpt4 key购买 nike

给定以下 C++ 代码:

#include <iostream>

int main()
{
const int i = 1;
*const_cast<int*>(&i) = 1; // Not allowed but doesn't do anything?
std::cout << i << "\n";
}

问题:上面的代码是否调用了UB(未定义行为)?我知道放弃 const 并将新值分配给 i 会导致 UB,因为我们不允许更改 const 变量的值。然而,在上面的代码中,我实际上并没有改变 i 的值 - 所以,这仍然是 UB 吗?

最佳答案

是的。它仍然是 UB。

尝试更改 const 变量是 UB,而不仅仅是分配一个值。

来自 N4296,第 1.9 节,第 4 段:

Certain other operations are described in this International Standard as undefined (for example, the effect of attempting to modify a const object).

关于c++ - 将相同的值分配给 const 变量会导致 C++ 中的 UB 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54295078/

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