-6

这可能是个愚蠢的问题,但我很困惑。这就是为什么我要清除我的疑问。昨天,在我的采访中,我收到了一个问题,比如

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

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

4

2 回答 2

5

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

顺便说一下,printf 不是一个 void 函数,而是返回打印的字符数,在“Hello”的情况下为 5。

于 2012-11-27T16:13:31.893 回答
3

你可能读到的“你需要一个左值来接受函数调用的返回”

例如。在你的代码中。

你不能做

5 = fun();

因为 5 不是左值。

不过这两个都不错

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()
于 2012-11-27T16:13:36.133 回答