C中的浮点常数

Muh*_*edy 3 c java types casting

我有一个关于C中浮点常量的问题.

在Java中,double的默认浮点常量类型,因此以下将导致java中的编译错误:

float f = 100.0;   // we either need to uses type case operator or put f at the end of the number constant.
Run Code Online (Sandbox Code Playgroud)

这是因为默认的浮点常量是double类型并且从double转换为float而没有类型转换操作符是一个错误,所以我们需要添加一个类型case操作符或将f放在数字的末尾.

那么,为什么在C中这不会产生错误,是因为默认的浮点常量是float类型,还是因为编译器执行了隐式的转换转换(在C中不需要类型case运算符) ????

Jam*_*lis 8

在C中,浮点常量double默认具有类型,但是a double可以隐式转换为a float(请注意,您必须要小心:如果常量的值超出了a表示的范围float,则此类转换的结果为未定义).

如果需要类型的浮点常量float,可以将后缀附加f到常量的末尾.