提问人:Dee A 提问时间:10/31/2023 最后编辑:wohlstadDee A 更新时间:10/31/2023 访问量:87
printf 在分配 null 字符串时返回 6 而不是 0
printf returns 6 instead of 0 when assigning a null string
问:
为什么函数在作为字符串分配给它时返回 6 而不是 0,尽管它什么也没打印?printf
NULL
int main(void)
{
int x;
x = printf("%s", NULL);
printf ("\n%d", x);
}
输出为:
(null)
6
答:
5赞
KamilCuk
10/31/2023
#1
为什么 printf 函数在将 NULL 作为字符串分配给它时返回 6 而不是 0
因为它打印了 6 个字符。 “(null)” 是 6 个字符。
虽然它什么都没有打印?
它正在打印“(null)”。那是 6 个字符。
请注意,作为参数传递给格式说明符首先是无效的,并且会导致未定义的行为。某些实现(例如您正在使用的实现)正在打印“(null)”而不是崩溃。NULL
%s
评论
0赞
chux - Reinstate Monica
10/31/2023
Answer 使用(使用代码格式)作为代码的描述符,后面使用(也使用代码格式)来指示选择文本输出。请考虑使用“(null)”来增加清晰度。NULL
(null)
评论
(null)
""
NULL