我正在尝试将 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 是从文件中读取的,它的值是正确的,因为我在调用函数之前打印了它们。即使我在函数中打印它们,结果也是一样的。当我在评论中使用类型转换时,结果也相同。有人可以向我解释为什么它不起作用吗?
谢谢
最佳答案
在声明中:
printf("%lf ", C[0][i]);
您使用了不正确的说明符(它需要一个 double
)。
使用%Lf
打印一个long double
,使用%lld
打印一个long long
。
注意:
- 在 C++ 中,不要使用
printf
,而是更喜欢std::cout
和标准库 -
printf
specifiers from en.cppreference.com
关于c++ - long long 到 long double 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25185367/