关于单双精度的问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 17:56:42
我要定义x=1.2;y=2.4;z=-3.6
1.当我定义他们为float时,系统报错truncation from 'const double ' to 'float ,为什么?
2.当我要求显示printf("x=%8.6f,y=%8.6f,z=%9.6f\n",a,b,c);时,显示为
x=0.000000,y=0.000000,z=1.#QNANO,
而我要求显示printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);时,就能正常显示结果,这是为什么呢?
请问要怎么改正呢?
整个程序如下:
#include<stdio.h>
void main()
{
int a=3,b=4,c=5;
double x,y,z;
long int u=51274,n=128765;
char c1='a',c2='B';
x=1.2;y=2.4;z=-3.6;
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%8.6f,y=%8.6f,z=%9.6f\n",a,b,c);
printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6d n=%9d\n",u,n);
printf("c1='%c' or %d(ASCII)\n",c1,c1);
printf("c2='%c' or %d(ASCII)\n",c2,c2);

}

把整个程序贴上来
printf("x=%8.6f,y=%8.6f,z=%9.6f\n",a,b,c);
a,b,c都是int数据,用f方式显示int,需要强制转化,这样直接写是无法正常转化为float数据的
x,y,z定义成什么应该不会报错,除非你声明的时候是double,之后赋值时又强制转换。