C 这里printf和return之间的区别令人困惑吗?

C 这里printf和return之间的区别令人困惑吗?,c,return,printf,C,Return,Printf,学习K&R C,这让我感到困惑 在这里,当我将returnk放入循环中时,它不会打印出k。但是当我写printf(“k:%d,k)时,它会打印k的一个值(初始条件)并退出,但不会返回k的值 这让我对return的确切功能感到困惑,如果k的值进入循环,它可以printf为零,那么为什么不returnk并退出循环呢 int k; for (k=0; k<5; ++k) { printf("k :%d\n",k); return k; } 它将“输出”零作为发送到shell的退出状态代

学习K&R C,这让我感到困惑

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

这让我对
return
的确切功能感到困惑,如果
k
的值进入循环,它可以
printf
为零,那么为什么不
returnk
并退出循环呢

int k;
for (k=0; k<5; ++k)
{
  printf("k :%d\n",k);
  return k;
}
它将“输出”零作为发送到shell的退出状态代码

EXIT\u SUCCESS
只是0的同义词
returnk
returnexit\u SUCCESS
也在做同样的事情

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


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

K&R C并不是介绍自己编程的好方法。25年前可能是,但现在不是。它不会将k的值返回到哪里?您能给我们看一下完整的程序吗?您需要继续阅读K&R以了解返回的作用。
return K
将把
K
的值作为当前函数的返回值,在这种情况下,
main
。它与打印的内容无关。
#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;
}