作为我的工作的一部分,我偶尔需要评估编程职位的候选人。最近有一段代码片段传到了我的桌子上,我的第一个想法是我不确定像这样的代码是否还能够编译。但它确实可以编译,并且也能正常工作。
有人能解释一下这是为什么以及如何工作的吗?要求是提供一个函数来对五个整数进行排序。
现在我能看到这种方法的缺点(对于1970年后出生的人来说缺乏可读性和可维护性),但是有人能想到任何优点吗?我不愿轻易地否定它,但在决定是否让这个人回来参加第二轮面试之前,我想知道除了作者的工作保障之外,它是否具有任何可取之处。
有人能解释一下这是为什么以及如何工作的吗?要求是提供一个函数来对五个整数进行排序。
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年后出生的人来说缺乏可读性和可维护性),但是有人能想到任何优点吗?我不愿轻易地否定它,但在决定是否让这个人回来参加第二轮面试之前,我想知道除了作者的工作保障之外,它是否具有任何可取之处。