gpt4 book ai didi

c++ - 诠释; ...; (a == a) 失败?

转载 作者:可可西里 更新时间:2023-11-01 18:03:42 24 4
gpt4 key购买 nike

如果我们将floatdouble 类型设置为NaN,那么它们不等于任何东西,包括它们自己
int 会发生这样的事情吗?

最佳答案

如果将未初始化的变量与其自身进行比较,任何事情都可能发生。毕竟是未定义的行为。对于已初始化的 int 变量,这不会发生。

请注意,未显式初始化的命名空间作用域、类静态和函数静态 int 变量的值为 0。这样它们就不会比较相等。


我刚刚用 Clang 测试过:

int main() {
int x;
return (x == x);
}

当使用 -O1 编译时,这将返回 0,因为允许优化器假定 x 没有稳定值。

GCC 对上述更宽容,返回 1。以下也使 GCC 返回 0(如果允许选择,显然不做分支更便宜):

int main() {
int x;
if(x == x) {
return 1;
}
return 0;
}

最后,结果不仅取决于执行代码的 CPU,还取决于工具链中的其他任何东西。

关于c++ - 诠释; ...; (a == a) 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3949471/

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