2014-01-21 58 views
0

我看到了這個問題,在網上的C測試
商店更大的字符串的ARR [NUM]

#include<stdio.h> 

int main() 
{ 
char arr[11]="The African Queen"; 
printf("%s",arr); 

return 0; 
} 

什麼會打印:
一個非洲皇后
B中的
下的 非洲
d編譯錯誤< - 這是答案,由於現場

豪我運行它,因爲我回答了C和我剛剛收到警告warning: initializer-string for array of chars is too long,它打印了C!是因爲我使用了不同的編譯器嗎?或者答案錯了?

+1

e。 'arr [10]'是''n'' arr不以'\ 0'結尾。 – BLUEPIXY

+1

可能會顯示「The African」,然後訪問數組邊界外。 (UB)(1)正常結束。 (2)顯示垃圾(3)發生內存訪問衝突。 (4)等 – BLUEPIXY

+0

_initializer字符串的字符數組太長_在C中沒有錯誤。 – BLUEPIXY

回答

0

這取決於編譯器。

gcc給出warning: initializer-string for array of chars is too long [enabled by default] 並打印The African

Turbo c++在Windows會給編譯器錯誤Too many initializers

還有一件事@BLUEPIXY說即arr [10]是'n'arr不以'\ 0'結尾。