c - 这个职位增量是如何运作的?

标签 c

#include <stdio.h>

int main ()
{

  int a=10;

  printf("%d %d %d",a,a++,a);

  return 0;
}

我得到的输出是“11 10 11”。 我认为输出将是“10 10 11”。

为什么 a 会这样递增?

最佳答案

因为无法保证 C 编译器计算参数的顺序。 (标准)唯一保证的是它们在调用之前都会被评估。因此,您永远不应该依赖参数的求值顺序。只需将其视为随机即可。

因此,一般来说,如果同一变量在参数列表中多次存在,请避免使用自动增量。

关于c - 这个职位增量是如何运作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33106682/

相关文章:

c - 单一函数可处理两种类型的链表

c - 如何读取单行

c - 将数组指针传递给对数字进行排序的函数

c - 如何为 C99 中隐式定义的多维数组分配内存?

c++ - 让 pthread 等待另一个数据

c - 通过*指针分配后,相邻的内存块将被零填充。为什么?

c - C语言中如何将数组中的元素移动到不同的索引?

c - 无法让子进程相互通信

c - 在 C 中初始化 const 变量

c - 为什么 GCC 原子内置函数需要额外的 "generic"版本?