这里即使基地址相同,那么为什么输出不一样,请描述如何在第一个printf语句中完成工作?
#include<stdio.h>
int main(){
char c[2]="a";
printf("%c\n",c);
printf("%c",c[0]);
return 0;
}
答案 0 :(得分:4)
在第一个printf()
语句中,您有未定义的行为。任何事情都可能发生。在这种情况下,你运气不好,得到了一个你认为可以解释的结果(但实际上你不能:它是 UB )。
在第二个printf()
语句中(忽略 UB 已发生并且整个程序无效的事实),将打印数组c
的第一个元素。