Преобразование длинных длинных в длинные двойные

Я пытаюсь преобразовать первый ряд длинной длинной матрицы в 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 читается из файла, и его значения верны, так как я печатаю их перед вызовом функции. Даже когда я печатаю их внутри функции, результат один и тот же. Результат также тот же, когда я использую приведение, как в комментарии. Может кто-нибудь объяснить мне, почему это не работает?

Спасибо

0

Решение

В заявлении:

printf("%lf ", C[0][i]);

Вы используете неверный спецификатор (он ожидает double).

использование %Lf напечатать long doubleиспользовать%lld напечатать long long,

Замечания:

5

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector