【发布时间】:2014-09-30 20:43:00
【问题描述】:
我正在尝试将 long long 矩阵的第一行转换为 long double,但是当我打印结果时它只打印 0。这是函数:
void convertLLtoLD(long long **B, long double **C, int n){
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
C[i][j] = 0;
}
}
for (i = 0; i < n; i++) {
C[0][i] = B[0][i]; //C[0][i] = (long double)B[0][i];
}
for(i = 0; i < n; i++)
printf("%lf ", C[0][i]);
}
这是我在调用函数之前分配 C 的代码:
long double** C = (long double**)malloc(n * sizeof(long double*));
for (i = 0; i < DIM; i++) {
C[i] = (long double*)malloc(n * sizeof(long double));
}
我正在使用 GCC 4.8 编译代码。 B 是从文件中读取的,它的值是正确的,因为我在调用函数之前打印了它们。即使我在函数内打印它们,结果也是一样的。当我在评论中使用演员表时,结果也是一样的。有人能解释一下为什么它不起作用吗?
谢谢
【问题讨论】:
-
你实际上想转换什么值?
-
"%lf ":将"%Lf "用于long double。 -
在
convertLLtoLD(()中,您没有为 B 或 C 声明任何维度。它们都是指向数字的指针,而不是指向数字行或列的指针。 -
@Don'tYouWorryChild:为什么会这样?
-
@sop :我的错误,我没有注意到
C的类型是long double**。这样写就好了。
标签: c++ c type-conversion