- 1
printf(" %f %f %f %f %f %f %f %f\n",Xk[0],Xk[1],Xk[2],Xk[3],Xk[4],Xk[5],Xk[6], Xk[7]);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+123.5
printf(" %f %f %f %f %f %f %f %f\n",Xk[0],Xk[1],Xk[2],Xk[3],Xk[4],Xk[5],Xk[6], Xk[7]);
Рад бы был, если б это написали китайцы. К сожалению, дело рук наших соотечественников.
для 8 элементов плодить лишний цикл для вывода тоже не всегда айс. например в такой форме проще дописать названия параметров в выводную строку если они разные для элементов.
Бывало и говнокодее -- два-три таких printf.
Подобные выводы, скорее всего, просто отладочные, хочется глазами уследить, что там происходит. А для счёта перекомпилировать, закомментировав вывод.
Доведём вашу идею до абсурда и поставим человеку монитор шириной с комнату. И что? Сразу можно писать ВСЮ программу в одну строку?
Типичный printf:
printf("%.8f %.8f %.8f %.8f %.8f %.8f %.8f %.8f %.5f %d", q[0], q[1], q[2], q[3], q.norm(), fabs(q[1]), fabs(q[2]), fabs(q[3]), rot.angle,rot.madeIter());
Как такое в цикл?
А без него у меня всё в точности так, как в командной строке. И переставить легко местами. Захочу, буду рядом выводить q[1] и fabs(q[1]), а захочу и не буду... Всякие циклы, лишние строки, они от дела отвлекают.
Обычно printf служит именно для быстрой проверки того, что творится внутри кода, а не для красивой записи. То, что в файл, скажем, печатается, ещё может быть определённым образом структурировано для той программы, куда потом отправится, а на экран выводить данные, только чтобы глазом проследить кривую, основные моменты, ошибку отловить.
Посмотрю я на вас, когда вы случайно поменяете местами выражения разных типов, а команды их форматирования (%d %.8f) забудете. Если не лениться и написать агрегат в несколько строк, то такой проблемы не возникнет. И переставлять легче строки, а не конструкции внутри строки.
printf прежде всего печатает в консоль. И служит он много для чего. Чем отличается печать отладочных данных от не отладочных? Почему во втором случае разрешается делать говнокод? Непонятно.
Я не знаю ни одного живого человека, который бы разбивал такую строку данных на две.
Уж фортрановцы и подавно всё в одной строке пишут.
Но со мной это происходило только на младших курсах.
float Xk[8] = {...};
printf(" %f %f %f %f %f %f %f %f\n", Xk);
((
int main()
{
struct X{
double Xk[8];
} x = {1,2,3,4,5,6,7,8};
printf(" %f %f %f %f %f %f %f %f\n", x);
}
#include <stdio.h>
#define A 9
#define B A
int main()
{
int x[]={B,012,11,12};
printf("%d %d %d %d\n");
}
int x[]={B,012,0xB,12};