c - 这里 printf 和 return 之间的区别令人困惑?

标签 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;
}

最佳答案

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

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

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

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

关于c - 这里 printf 和 return 之间的区别令人困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18863375/

相关文章:

c - 在C语言中,变量如何存储两个值?

c - sprintf ("%!ld"是什么)?

c - Printf 输出一堆零

指向 volatile 结构成员的常量指针

c - 过滤读数 PIC

c - 尝试对 c 中的结构数组使用 realloc 导致无效指针

python - python 函数不返回任何内容

c++ - 是否可以返回指向类中声明的结构的指针?

return - 想知道 libusb_bulk_transfer 错误代码

c - %*s 格式说明符是什么意思?