所以我有这段代码试图定义n * n大小的动态矩阵。 事实证明,不是输出输出G的值,而是输出0。知道为什么吗?
#define G 6.67408e-11
typedef struct matrix
{
double mass;
double cmx;
double cmy;
}MATRIX;
MATRIX **mtr;
void main(int argc, char** argv){
const long n = atoi(argv[1]);
mtr = (MATRIX**)calloc(n,sizeof(MATRIX*));
for (int i=0; i<n; ++i)
{
mtr[i]=(MATRIX*)calloc(n,sizeof(MATRIX));
}
mtr[0][0].cmx=G;
printf("%f\n", mtr[0][0].cmx);
}
答案 0 :(得分:2)
只需使用%e
或%g
来显示输出。如果使用%f
,则告诉编译器以标准格式打印数字,即0.0000000000667408
,但由于%f的默认格式为6位十进制密码,因此编译器会将其四舍五入为{{ 1}}。