读书人

关于在linux平台上打印NULL出现段异常

发布时间: 2012-12-14 10:33:08 作者: rapoo

关于在linux平台下打印NULL出现段错误的问题
为什么printf("%s",0)就能打印出NULL,但printf("%s",NULL)却出现段错误,NULL不是0的宏定义吗
[最优解释]


#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
printf("%s", (char*)NULL);

return 0;
}

//(null)


[其他解释]
#include <stdio.h>

int main(void)
{
printf("%s\n", NULL);
printf("%s\n", 0);
return 0;
}
用gcc -E test.c查看,发现两行代码不一样:
int main(void)
{
printf("%s\n", ((void *)0));
printf("%s\n", 0);
return 0;
}
我觉得还要再看printf的实现。
[其他解释]
你的是什么平台啊,试了一下,都是一样的null。
[其他解释]
做开发不必过分关注这类问题的

读书人网 >C语言

热点推荐