遇到一个有趣的问题
有如下代码:
int main()
{
printf("abc%cdef\n\n", '\0');
printf("abc\0def");
return 0;
}
一般大家会直观的认为对于第一条输出语句,会把\0放在%c的位置,所以第一条printf会输出abc而不输出%c后边的def
而实际上的结果是:
VS2109:
DevC++:
牛客OJ页面
原因分析:
不同的环境,对于printf的具体实现不一样
如VS、Dev,是一边输出一边拼接,相当于printf(“abc”)+printf(“%c”,‘\0’)+printf(“def”)
而牛客则是先将占位符替换为内容,将字符串拼接好后再统一输出,即printf(“abc\0def”)