【问题标题】:what is the return type of printf [closed]printf的返回类型是什么[关闭]
【发布时间】:2012-11-27 16:10:38
【问题描述】:

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

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

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

【问题讨论】:

  • char ch="Hello"; 应该是char* ch="Hello";
  • 投反对票是意料之中的,但没有这么多。只有 1 条评论和 2 条答案。休息3 ..???
  • @UmNyobe 在我的采访中有人问过这个问题。我自己没有问这个问题。\
  • 你没有问一个真正的问题。

标签: c function return-value


【解决方案1】:

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

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

【讨论】:

  • 关于printf,我知道这一点。这就是为什么,我在我的问题中提到了输出。
【解决方案2】:

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

例如。在你的代码中。

你做不到

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()

【讨论】:

    猜你喜欢
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2018-04-04
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多