c语言中一点小问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 19:48:29
main()
{int i;long int l;float f; double d;
i=l=f=d=(double)100000/3
printf("i=%-10dl=%-10ldf=%-15fd=%-15f\n",i,l,f,d);
}
书上说程序输出结果是i=-32203 l=33333 f=33333.332031 d=33333.333333
请给我分析下程序 谢谢

正常来说100000/3=33333.333333...
唯一你可能不明白的应该是为什么i=-32203,因为i的范围是-32767到+32767(不同编译器也不同)它显示不了33333就循环显示.例如32768就变成-32767;32769就变成-32766了...所以33333就变成-32203

long int l中的l显示范围很大.自然333333就全部显示下了

float f浮点型,显示6-7位有效数字我觉得33333.3是正常的.后面的应该无意义吧.

double d显示范围很大...

int long float double 是4种不同的数据类型 int是整形 long是长整型 float和double是浮点型
float是6-7有效数字 范围-3.4*10的-38次幂-----------3.4*10的-38次幂