Объясните, пожалуйста, полтергейст с printf
От: 31512  
Дата: 21.09.09 19:04
Оценка: :)))
Здравствуйте Уважаемые. Написал программу на C в MS VC++ 9. Всё хорошо. Всё работает. Программа обсчитывает некоторые статические данные и выводит на консоль. Для вывода использую printf. Среди прочего выводится массив, объявленный как

EXTENDED SumTensorFu[3][3];

где
EXTENDED не более чем
typedef long double EXTENDED;

Все массивы такие. До вывода SumTensorFu выводятся другие массивы и с ними всё хорошо.
Но при выводе SumTensorFu начинается полтергейст. А именно, он выводит всякий бред вроде
***********Fu summ***************************
3.613937e-308 3.613937e-308 3.613937e-308
3.613937e-308 3.613937e-308 3.613937e-308
3.613937e-308 3.613937e-308 3.613937e-308
*********************************************
Это вроде как нуль такой. Начинаю отладку. И к своему удивлению, в отладчике, прямо в процедуре печати вижу, что SumTensorFu содержит как раз вполне вменяемые и ожидаемые аналитически значения. А именно

4.516520e-001 -1.354969e-004 -1.086577e-005
-4.007900e-005 4.517040e-001 2.190850e-006
3.283134e-005 1.019956e-004 4.517676e-001

Отладчик показывает SumTensorFu[0][0] = 4.516520e-001, а на консоль вывелось 3.613937e-308, в отладчике SumTensorFu[0][1] = -1.354969e-004, а в консоли
3.613937e-308 и т.д. При этом точно такие же массивы и даже более замысловатые данные вполне себе вывелись нормально.
Может я какой нюанс не знаю? Или неправильно использую printf?

Процедура вывода:

void PRINT_Fu_Summ()
{
    printf("***********Fu summ***************\n");
    for (int Alfa=0; Alfa<3; Alfa++)
    {
        for (int Beta=0; Beta<3; Beta++)
        {
            printf("%e\t", SumTensorFu[Alfa, Beta]);          
        }
        printf("\n");
    }
    printf("**************************************\n\n");
}

Помогите, пожалуйста разобраться.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.