我在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,因为ab都不包含终止的NUL字符(c包含终止的NUL字符,因此最后一个printf()本身就可以了)。

10-06 03:00