这可能是个愚蠢的问题,但我很困惑。这就是我清除疑虑的原因。昨天,在我的采访中,我遇到了一个像
这样的问题char ch="Hello";
printf("%d",printf("%s",ch));
我认为printf
是一个 void 类型的函数,因为我从未见过要分配给任何变量的printf
函数。所以,我告诉它,它会显示编译错误。因为,编译器不会找到返回类型printf
函数。但是我错了。输出 Hello5 。我真的很困惑,这是怎么来的。
答案 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()