#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'),我预计会出现运行时错误。
2.如果程序仍然编译和执行成功,因为s[4]还没有被初始化,我预计那个地方会有一些垃圾值..但我也错了。
上述程序的输出是: abcde $$ 两个$(dollor) 之间没有字符,表示printf 跳过s[4]。这是相同的ideone链接:http: //ideone.com/UUQxb2
解释这种行为的原因(输出)?