Здравствуйте Уважаемые. Написал программу на 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 содержит как раз вполне вменяемые и ожидаемые аналитически значения. А именно
Отладчик показывает SumTensorFu[0][0] = 4.516520e-001, а на консоль вывелось 3.613937e-308, в отладчике SumTensorFu[0][1] = -1.354969e-004, а в консоли
3.613937e-308 и т.д. При этом точно такие же массивы и даже более замысловатые данные вполне себе вывелись нормально.
Может я какой нюанс не знаю? Или неправильно использую printf?
Выражение SumTensorFu[Alfa, Beta] делает совершенно не то, что вы думаете
А то что вы хотели записывается SumTensorFu[Alfa][Beta]. Гуглить по словам "оператор запятая".
Re[2]: Объясните, пожалуйста, полтергейст с printf
Здравствуйте, Fwiffo, Вы писали: F>Выражение SumTensorFu[Alfa, Beta] делает совершенно не то, что вы думаете F>А то что вы хотели записывается SumTensorFu[Alfa][Beta]. Гуглить по словам "оператор запятая".
Здравствуйте, 31512, Вы писали:
3>Здравствуйте Уважаемые. Написал программу на C в MS VC++ 9. Всё хорошо. Всё работает. Программа обсчитывает некоторые статические данные и выводит на консоль. Для вывода использую printf. Среди прочего выводится массив, объявленный как
3> printf("%e\t", SumTensorFu[Alfa, Beta]);
Надо будет занести в базу приколов синтаксиса С++...
А вот зайца кому, зайца-выбегайца?!
Re[2]: Объясните, пожалуйста, полтергейст с printf
Здравствуйте, alzt, Вы писали:
A>Здравствуйте, vadimcher, Вы писали:
3>>> printf("%e\t", SumTensorFu[Alfa, Beta]);
V>>Надо будет занести в базу приколов синтаксиса С++...
A>Да ладно, всего лишь синтаксис. При переходе с шарпа так легко ошибиться.
Да нет, я ничего личного. Помнится, когда-то давно, когда в школе нас после Паскаля стали C учить, у меня подобных глюков было не мало. А здесь просто интересно, что синтаксис выглядит абсолютно понятным и интуитивным, и к тому же компилируется даже без ворнинга.
А вот зайца кому, зайца-выбегайца?!
Re[4]: Объясните, пожалуйста, полтергейст с printf
V>что синтаксис выглядит абсолютно понятным и интуитивным, и к тому же компилируется даже без ворнинга.
Можно даже придумать такие типы, что будет и работать как надо , с перегрузкой оператора 'запятая'. Только специальный тип для индекса придется вводить.
Да здравствует мыло душистое и веревка пушистая.
Re[5]: Объясните, пожалуйста, полтергейст с printf
Здравствуйте, Vamp, Вы писали:
V>>что синтаксис выглядит абсолютно понятным и интуитивным, и к тому же компилируется даже без ворнинга. V>Можно даже придумать такие типы, что будет и работать как надо , с перегрузкой оператора 'запятая'. Только специальный тип для индекса придется вводить.
Ну совсем прозрачно не получится: сколько типов не создавай, для int-ов запятую не переопределишь