C语言中的float和double引发的问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 08:27:52
发现下面的程序在定义cost[][]这个数组为float和double后,输出的结果却不一样,请明白的帮我看看!若定义是float的话,输出结果和我输入的数值是一样的,但是若定义为double后,则输出的结果全是0!程序如下:
#include<stdio.h>
main()
{
int i,j;
double cost[3][3]={0};
printf("输出\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%f",&cost[i][j]);
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%f",cost[i][j]);
printf(" ");
}
printf("\n");
}
}

%f默认是float,而float占4字节,double是8个,所以读进去都是0。

改成%lf来读double

改成%lf来读double?请教有种读法吗>

/*定义为doulbe*/
#include<stdio.h>
main()
{
int i,j;
double cost[3][3]={0};
printf("输出\n");

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%lf",&cost[i][j]);
}
}

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%lf",cost[i][j]);
printf(" ");
}
printf("\n");
}

}

/*定义为float*/
#include<stdio.h>
main()
{
int i,j;
float cost[3][3]={0};
printf("输出\n");

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
sca