#include<stdio.h>
int main()
{
char s[2]="a";
s[1]='b';s[2]='c';s[3]='d';s[5]='e';
printf("%s $%c$",s,s[4]);
return 0;
}
1.當我在C(gcc-4.7.2)中運行該程序時,由於缺少空字符('\ 0'),我期望運行時錯誤。C字符串程序的輸出
2.如果程序仍然編譯並執行成功,由於s [4]沒有被初始化,所以我期望在那個地方有一些垃圾值..但這裏我也錯了。
上述程序的輸出是: abcde $$ 兩個$(dollor)之間沒有字符,表示printf跳過s [4]。 這裏是一個ideone鏈接相同: http://ideone.com/UUQxb2
解釋此行爲(輸出)的原因?
你的程序應該給編譯錯誤。因爲當s僅由2個元素組成時,s [4]或s [5]不存在 –
位置s [4]可能只是有一個不可打印的字符。 –
@AswinMurugesh:我已經給出了問題中的ideone鏈接,它正在編譯和執行成功。 –