我在Linux Redhat上使用gcc编译器。我很惊讶为什么a[5]
和a[6]
(Maya和Mayank)的输出有2个字符的差异,尽管它们的大小只有1个字节。
char a[5]="Mayank";
char b[6]="Mayank";
char c[7]="Mayank";
printf("%s\n",a);
printf("%s\n",b);
printf("%s\n",c);
输出:
Maya
Mayank
Mayank
最佳答案
前两个printf
调用都undefined behaviour,因为a
和b
都不包含终止的NUL字符(c
包含终止的NUL字符,因此最后一个printf()
本身就可以了)。