【发布时间】:2016-04-27 06:43:50
【问题描述】:
#include<stdio.h>
#include<string.h>
int main() {
char *ptr = NULL;
printf("%s", ptr);//The output is null
// printf("%s\n", ptr); //addition of **\n** give segmentation fault
return 0;
}
第一个printf 输出:(null)。但是为什么第二个printf 的输出是:Segmentation fault (core dumped) 刚刚添加:\n?
【问题讨论】:
-
在法律上:这是未定义的行为,所以任何东西,特别是任何输出,都是可以接受的。在日常生活中:垃圾进,垃圾出。
-
@hacks 你为第二次 printf 取出 cmets 了吗?
-
@Rishi 你用过哪个编译器?
-
@AnilKumar 版本 3.4.2
-
@Rishi 我用过 gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2。
标签: c