Здравствуйте Уважаемые. Написал программу на 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");
}
Помогите, пожалуйста разобраться.