这可能是个愚蠢的问题,但我很困惑。这就是为什么我要清除我的疑问。昨天,在我的采访中,我收到了一个问题,比如
char ch="Hello";
printf("%d",printf("%s",ch));
我认为printf
是一个void类型的函数,因为我从未见过printf
分配给任何变量的函数。所以,我告诉过,它会显示编译错误。因为,编译器不会找到返回类型printf
函数。但是我错了。输出是Hello5。我真的很困惑,这是怎么来的。
这可能是个愚蠢的问题,但我很困惑。这就是为什么我要清除我的疑问。昨天,在我的采访中,我收到了一个问题,比如
char ch="Hello";
printf("%d",printf("%s",ch));
我认为printf
是一个void类型的函数,因为我从未见过printf
分配给任何变量的函数。所以,我告诉过,它会显示编译错误。因为,编译器不会找到返回类型printf
函数。但是我错了。输出是Hello5。我真的很困惑,这是怎么来的。
函数 fun() 返回一个 int,你只是没有将它分配给任何东西。因此返回值被丢弃,因为它没有分配给任何东西。
顺便说一下,printf 不是一个 void 函数,而是返回打印的字符数,在“Hello”的情况下为 5。
你可能读到的“你需要一个左值来接受函数调用的返回”
例如。在你的代码中。
你不能做
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()