我在Linux上尝试了以下代码
#include<stdio.h>
int main()
{
char *p=NULL;
printf("%s",p);
return 0;
}
#include<stdio.h>
int main()
{
char *p=NULL;
printf("%s\n",p);
return 0;
}
第一个输出:(null)
第二个导致分段错误。
为什么\n
会产生这样的差异?
答案 0 :(得分:0)
您的两个示例都是每个标准的未定义行为。使用printf
调用%s
并传递NULL指针是UB。
因此讨论结果毫无意义。在一个系统上,您可能会获得一个结果,而在另一个系统上,您将获得另一个结果。