如果我们设置float and double键入至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,还取决于工具链中的其他任何内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)