什么是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()