【问题标题】:Difference between printf and return here is confusing? [closed]这里的 printf 和 return 之间的区别令人困惑? [关闭]
【发布时间】:2013-09-22 16:33:40
【问题描述】:

学习 K&R C,这让我很困惑。

在这里,当我将return k 放入循环时,它不会打印出k。但是当我写printf("k :%d", k)时,它会打印一个k(初始条件)的值并退出,但不会打印returnk的值。

这让我对return 的作用感到困惑,如果它进入循环,它可以printfk 的值设为零,那么为什么不return k 以及为什么要退出循环呢?

int k;
for (k=0; k<5; ++k)
{
  printf("k :%d\n",k);
  return k;
}

输出:

k:0

它进入了循环,所以它一定是真的。那么return的值为什么不是k呢?

这是完整的程序:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
int k;


for (k=0; k<5; ++k)
{
  printf("k %d\n",k);

  return k;
}

return EXIT_SUCCESS;
}

【问题讨论】:

  • K&R C 不是向自己介绍编程的好方法。 25 年前可能是,但现在不是。
  • 它不会将k的值返回到哪里?你能给我们展示一下完整的程序吗?
  • 您需要继续阅读 K&R 以了解 return 的作用。
  • return k 会将k 的值作为当前函数的返回值,在本例中为main。它与printf 打印的内容无关。

标签: c return printf


【解决方案1】:

它确实“输出”零作为发送到 shell 的退出状态代码。

EXIT_SUCCESS 只是 0 的同义词。return kreturn EXIT_SUCCESS 做同样的事情。

要查看输出,您需要运行具有可观察效果的子例程,例如printf

return 是流控制语句,而不是子例程。它退出当前函数并将计算机的控制“返回”给调用函数。在这种情况下,这会导致程序终止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    相关资源
    最近更新 更多