关于在linux平台上打印NULL出现段异常的有关问题
关于在linux平台下打印NULL出现段错误的问题
为什么printf("%s",0)就能打印出NULL,但printf("%s",NULL)却出现段错误,NULL不是0的宏定义吗
------最佳解决方案--------------------
------其他解决方案--------------------
#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。
------其他解决方案--------------------
做开发不必过分关注这类问题的
为什么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。
------其他解决方案--------------------
做开发不必过分关注这类问题的