printf和return之间的区别令人困惑?

时间:2013-09-18 03:30:40

标签: c return printf

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

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

这让我感到困惑的是return究竟是什么,printf如果进入循环,k的值为零,那么为什么不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;
}

1 个答案:

答案 0 :(得分:1)

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

EXIT_SUCCESS只是0. return k的同义词,而return EXIT_SUCCESS正在做同样的事情。

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

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