#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
解释此行为的原因(输出)?
最佳答案
您正在数组范围之外写入/读取,这只是 undefined behavior您无法对程序将做什么做出任何预测。
关于c - C 字符串程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17432222/