printf 在分配空字符串时返回 6 而不是 0

问题描述 投票:0回答:1

为什么 printf 函数在将 NULL 作为字符串分配给它时返回 6 而不是 0,尽管它什么也没打印?

int main(void)
{
int x;
x = printf("%s", NULL);
printf ("\n%d", x);
}

输出为: (无效的) 6

c printf null-string
1个回答
0
投票

为什么 printf 函数在将 NULL 作为字符串赋给它时返回 6 而不是 0

因为它打印了6个字符

(null)
是6个字符。

虽然它什么也没打印?

正在打印

(null)
。那是 6 个字符。

请注意,将

NULL
作为参数传递给
%s
格式说明符首先是 无效,并且存在未定义行为。有些实现(例如您正在使用的实现)会打印
(null)
而不是崩溃。

© www.soinside.com 2019 - 2024. All rights reserved.