c - C 语言中的 printf 函数是如何工作的?

标签 c printf

我编写了这个 C 程序。

#include<stdio.h>
int main()
{
  int k=35;
  printf("\n%d %d %d",k==35,k=50,k>40);
  return 0;
}

并得到这个输出。

0 50 0

现在,我正在思考 printf 函数是如何工作的以及为什么输出是 0 50 0。

最佳答案

您通过修改 k 并在序列点之前的同一语句中使用其值来调用未定义的行为。

虽然任何输出都是合法有效的,但可以理解为什么在这种情况下会发生0 50 0:

当调用 C 函数时,其参数可以按任何顺序求值,但它们通常以相反的顺序求值(右-最先,最左边最后)。

不能得到保证,但通常是正确的。

因此这 4 个参数的计算结果为:

1.) k>40(假/0,因为 k 是 35)
2.) k=50(将 50 赋给 k,并计算为 50)
3.) k==35(false/0,因为 k 是 50,而不是 35)
4.) "\n%d %d %d" (字符串文字)

然后 printf 打印其参数:0, 50, 0

关于c - C 语言中的 printf 函数是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58479145/

相关文章:

c - 如何将文本文件连接到c中的标准输出

c++ - OpenGL/Glut 无法在其上绘制 [

c++ - 将 2D 对象移动到 OpenGL 中的一个点

C sleep 方法阻碍输出到控制台

c - printf() 没有被执行

java - 将$插入格式化的float java

c++ - 代码::在 Windows 中以固定精度阻止 printf double

c++ - 在 C++ 中用零初始化局部数组

c - 在 PIC18 上使用 C 实现多线程

c - Ubuntu 中的 wait() 函数