2010-10-01 56 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