gpt4 book ai didi

c++ - 为什么常数值变化不被视为错误?

转载 作者:搜寻专家 更新时间:2023-10-31 00:17:56 24 4
gpt4 key购买 nike

必须遵循代码 -

    const int WEEKDAYS = 7;
const int *pWeekdays = &WEEKDAYS;
*((int*) pWeekdays) = 9;
cout << WEEKDAYS << endl;

它给出输出 7,即 *((int*) pWeekdays) = 9; 行没有效果或抛出任何错误。

显然它喜欢做 7 = 9 那么为什么没有抛出错误?

最佳答案

抛弃常量性并因此可变地访问常量对象是简单的未定义行为。您的程序可以做任何它想做的事,不需要诊断。

永远记住,虽然崩溃的程序确实存在错误,但错误的程序并不总是会崩溃。 (或者正如苏格拉底所说,“并非每只猫都是鱼”。)


在 C++ 中,你绝对不应该使用 C 风格的转换。如果你试过更合适的static_cast<int*>(pWeekdays) , 你会得到正确的诊断。

关于c++ - 为什么常数值变化不被视为错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12164608/

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