请教一个C语言问题啊

来源:百度知道 编辑:UC知道 时间:2024/06/23 01:13:23
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define N 12
double f(double x)
{
double y;
y=pow(x,2);
return y;
}
main()
{
double x[N]={2};
int i;
for (i=0;i<N;i++)
{
x[i+1]=f(x[i]);
printf("%d ",x[i]);
}
system("PAUSE");
}
这个程序是用定义的函数来为数组赋值,数组的第一个元素的值是已知的
运行后出来的全是0……请问是怎么回事

或者将printf改成
printf("%d ",(int)x[i]);

来个类型强制转换。

double 在内存中是占8个字节的。属于浮点运算,存储也是按照浮点来存储的,即前四个字节都是零,后4个字节里才有数据。

而printf(%d 这里告诉编译器要用整型数,所以程序只会读取double在内存中的前四字节,当然全部都是0。

x是double型的,要用%f,%lf,不能用%d

%lf

同意