什么是printf的返回类型

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

char ch="Hello"; printf("%d",printf("%s",ch)); 

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

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

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

您可能阅读的内容“您需要一个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()