你怎么能让C编译器假设十进制文字(例如1.23)是浮点而不是双?

时间:2010-10-11 06:22:51

标签: c gcc compiler-construction

在我的源代码中,如果我将1.23写为文字,例如doThis(1.23),gcc假设它是双倍的。

除非输入doThis((float)1.23),否则有一种方法可以使用浮点数作为十进制文字/常量,除非在单个源文件中另有说明?

超级奖励点,是否有一种方法可以跨越(几乎)每个C编译器?

4 个答案:

答案 0 :(得分:7)

是的,标准方法是写1.23f。它适用于每个C编译器,因为它在ISO C99部分 6.4.4.2浮动常量中定义。 ISO C90和K& R具有相似的定义。

答案 1 :(得分:5)

尝试:

float fred = 0.37f;

答案 2 :(得分:2)

尝试123.4F获取浮点常量

答案 3 :(得分:2)

gcc还有-fsingle-precision-constant选项,告诉编译器将常量视为单精度。见http://gcc.gnu.org/wiki/FloatingPointMath