新标准增加后缀u(U),用来表示整数常量是一个无符号数。浮点常量用后缀F(或f)表示它是float类型;L(或l)表示它是long double类型;若没有后缀则是double类型。
注意浮点常量没有后缀则是double类型。
【例3.4】请分析下面程序中存在的问题。
#include<stdio.h>void main( ){ float f=1234.567; printf ( "%f, %10f/n",f,f);}
浮点常量没有后缀则是double类型,第1条语句的数字“1234.567”本身为double型,所以对定义“float f=1234.567;”,需要将它转换为float型。若无转换,编译时会给出警告。
warning C4305: 'initializing' : truncation from 'const double ' to 'float '
虽然有警告,但仍然可以输出正确结果:“1234.567017,1234.567017”。
如果使用“1234.567F”表示常量,既可以排除警告,也可以保证得到正确的输出结果。
如将定义改为“double f=1234.567”,则可得到正确输出为“1234.567000,1234.567000”。
一定要注意使用正确的格式。例如,下面的定义
double f=1/4;
中的f是等于0.250000还是0.000000?因为编译器要先计算“1/4”,这是两个整数相除,所以结果为0。如果写作“1./4”,得到0.250000。在程序中千万要注意这个问题。