В рамках моей работы меня иногда вызывают для оценки кандидатов на должности программистов. Фрагмент кода недавно прошел через мой стол, и я сначала подумал, что я не уверен, что такой код даже компилирует больше. Но при компиляции он работает, и он тоже работает.
Кто-нибудь может объяснить, почему и как это работает? Задача состояла в том, чтобы предоставить функцию для сортировки пяти целочисленных значений.
void order5(arr) int *arr; {
int i,*a,*b,*c,*d,*e;
a=arr,b=arr+1,c=arr+2,d=arr+3,e=arr+4;
L1: if(*a >*b){*a^=*b;*b^=*a;*a^=*b;}
L2: if(*b >*c){*b^=*c;*c^=*b;*b^=*c;goto L1;}
L3: if(*c >*d){*c^=*d;*d^=*c;*c^=*d;goto L2;}
if(*d >*e){*d^=*e;*e^=*d;*d^=*e;goto L3;}
}
Теперь я вижу недостатки этого подхода (отсутствие удобочитаемости и ремонтопригодности для всех, кто родился после 1970 года), но может ли кто-нибудь подумать о каких-либо преимуществах ? Я не решаюсь сразу отказаться от этого, но, прежде чем мы решим, возвращать этого человека во 2 раунд, я Я хотел бы знать, есть ли в нем какие-либо полезные функции, помимо гарантии занятости для автора.