一个自学C语言的初学者的问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 09:55:51
一个初学者的问题,举个例子
main()
{
float fa;
fa=33333.33333
printf("fa = %f\n", fa);
}
会出现fa=33333.332031但是将最后一句改成printf("fa = %d\n", fa);时,fa=0那么这个%后面的那个是如何定义的

%f用于显示实型数据,如上面的float型,整型和实型在计算机中都有表示范围的,float型表示范围是10的-37次方到10的38次方,%d用于显示整型数据,如int型,它在计算机中的表示范围是-32768-32767。在输出时,将%f改成%d,系统就会按整型输出,术语叫做自动转换,如果float数据的大小在int范围内,系统就会将这个数后面的小数舍弃,直接输出它的整数,如果超出了int的范围,会发生数据溢出,系统不会检查这个数是否溢出,它输出的将是一个随机数。上面的float型明显已超出了int型的范围,所以编译系统输出的是一个随机数0.

我想说明的是:int型数值范围可能有不同,在turbo c++/c中,范围是-32768~32767,而在visual c/c++和dev c++(竞赛专用编译环境)中范围是-2147483648-2147483647(即long范围),如果您采用turbo编译系统,便可能出现上述情况,因float范围是-3.4*(10的-38次方)~3.4*(10的38次方),%f用来输出浮点型(仅限float)数据,%d用于输出整型数据,当用它输出浮点型数据时,将截取整数部分输出,若超出范围,则给出随机值。

你就说吧,提问者,人家回答这么的详细,你怎么没反映啊,不尊重别人的劳动成果.