【发布时间】:2020-02-29 18:08:30
【问题描述】:
考虑代码:
#define LITERAL 1.0
int main()
{
double x = LITERAL;
if (x == LITERAL) return 1;
else return 0;
}
对于我们设置的任何数字双精度值 LITERAL(不仅仅是 1.0 而是任何其他双精度字面值),这是否保证返回 1?
编辑:为什么由于“缺少详细信息”而关闭了问题?这是一个定义明确的 C/C++ 问题,并得到了很好的答案。不需要更多细节,这是关于这些语言如何工作的一般问题。
【问题讨论】:
-
选择 C 或 C++。
-
您的问题是只涉及
double还是只是一个例子,您也希望float得到答案? -
@EricPostpischil 我对两种语言的答案都很感兴趣(如果在这种特殊情况下存在差异),这就是我有意将这两种语言都添加到标签中的原因。
-
如果你用c++,一般不应该用#define,首选
const float LITERAL = 1.0; -
一般来说,不应该使用
==与浮点值进行比较。
标签: c++ c floating-point precision literals