什么是printf的返回类型

时间:2012-11-27 16:10:39

标签: c function return-value

这可能是个愚蠢的问题,但我很困惑。这就是我清除疑虑的原因。昨天,在我的采访中,我遇到了一个像

这样的问题
char ch="Hello";
printf("%d",printf("%s",ch));

我认为printf是一个 void 类型的函数,因为我从未见过要分配给任何变量的printf函数。所以,我告诉它,它会显示编译错误。因为,编译器不会找到返回类型printf函数。但是我错了。输出 Hello5 。我真的很困惑,这是怎么来的。

2 个答案:

答案 0 :(得分:4)

函数fun()返回一个int,你只是不将它赋给任何东西。因此返回值被丢弃,因为它没有分配给任何东西。

顺便说一下,

printf不是一个void函数,而是返回打印的字符数,如果是“Hello”,则为5。

答案 1 :(得分:2)

您可能阅读的内容“您需要一个l值来接受函数调用的返回”

例如。在你的代码中。

你做不到

5 = fun();

因为5不是l值。

然而这两个都很好

int i;
i = fun(); // i is an l-value

fun(); // ignore the return value

另外,你需要

char * str = "hello"; // you cannot allocate a string to a single char

void main()是非标准的。

你需要

int main()