表示等于为假的C++规则是什么?鉴于:
float f {-1.0};
bool equal = (static_cast<unsigned>(f) == static_cast<unsigned>(-1.0));
例如https://godbolt.org/z/fcmx2P
#include <iostream>
int main()
{
float f {-1.0};
const float cf {-1.0};
std::cout << std::hex;
std::cout << " f" << "=" << static_cast<unsigned>(f) << '\n';
std::cout << "cf" << "=" << static_cast<unsigned>(cf) << '\n';
return 0;
}
产生以下输出:
f=ffffffff
cf=0
最佳答案
您的程序的行为未定义:C++ 标准没有定义负浮点类型到无符号
类型的转换.
(请注意,熟悉的环绕行为仅适用于负积分类型。)
因此,尝试解释程序输出没有什么意义。
关于c++ - 为什么在 C++ 中,如果数字恒定或不变,负数的 static_cast<unsigned> 会有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58919064/