printf中变量的递增和递减

我写了一个简单的程序,其中int a = 10 ,我期待的o / p是10 9 9

  printf("a++:%d \ta:%d \t --a: %d \n", a++, a, --a); 

但得到的o / p是9 10 10

我写了另一个类似printf(" a:%d \t --a: %d \n", a, --a);

我得到的o / p是9 9

任何人都能解释一下这个吗?

您遇到了未定义的行为 ,通过使多个表达式具有副作用, 中间没有序列点 。

无法保证评估哪些顺序函数参数,因此无法在此处“预期”某些内容(除非您编写了编译器)。