【发布时间】:2012-04-06 08:05:05
【问题描述】:
在long double x = 8.99999999999999999 的情况下,该值存储为double,因为未附加“L”。为什么当我已经将变量x 声明为long double 浮点类型时,C 编译器不能进行类型推断?
【问题讨论】:
-
因为标准 C 规范说它不应该进行类型推断。查看 Ocaml、Haskell 甚至 C++11 语言规范,了解具有某种类型推断的语言。
-
@BasileStarynkevitch:你可以把它作为答案。
-
当你已经声明了类型时要推断什么?
-
这里的限制因素是什么?这是一件很复杂的事情吗?
-
如果plain double和long double有不同的表示,应该可以直接使用long double表示,因为常量值是已知的。您确定这与您遇到的实际问题相符吗?