2010-10-01 60 views
-3

什么可以为以下拼图可能的解释:短节目益智

#include <stdio.h> 
int main(){ 
    static char *s[] = {"black","white","yellow","violet"}; 
    char *ptr[] = {s+3,s+2,s+1,s},***p; 
    p = ptr; 
    *++p; 
    printf("%s",*--*++p + 3); 
} 

output

+2

在解决这里的编译问题时有一个难题: – Chubsdad 2010-10-01 13:02:57

+5

如果有人在采访中问我这样的问题,我会跑一英里。你想为一个生成这样的代码的公司工作吗? – 2010-10-01 13:04:39

+1

@the_mandrill:我很想在这样一家公司工作,但是,我倾向于参加代码高尔夫的挑战...... – ninjalj 2010-10-02 12:40:27

回答

7
p = ptr; 

这不是一个难题。这是一段无效的代码,因为它将char**分配给char***。实际上问题发生在阵列声明中

s+3的类型为char**,但是您声明ptrchar*的数组。

+0

同意,但它来自这场比赛:http://effer56.iiita.ac.in /segmentation/home.html。 – Quixotic 2010-10-01 13:03:23

+0

t是无效的一段代码 - 因此我们投票NARQ – 2010-10-01 13:03:54

+0

但是,我想补充一点,他们已经在那里比赛中设置了一些UB问题。 – Quixotic 2010-10-01 13:04:14