且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《C语言解惑》—— 3.2 数据类型的后缀符号

更新时间:2022-10-01 18:55:06

本节书摘来自华章出版社《C语言解惑》一 书中的第3章,第3.2节,作者:刘振安 刘燕君,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2 数据类型的后缀符号

新标准增加后缀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。在程序中千万要注意这个问题。