-2

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

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

这让我对究竟return做了什么感到困惑,如果它进入循环,它printf的值可以为零,那么为什么不和为什么退出循环呢?kreturn k

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

输出:

ķ:0

它进入了循环,所以它一定是真的。为什么不值returnk

这是完整的程序:

#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;
}
4

1 回答 1

1

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

EXIT_SUCCESS只是 0 的同义词。return k并且return EXIT_SUCCESS正在做同样的事情。

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

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

于 2013-09-18T03:42:50.293 回答