C 在printf函数中使用增量运算符(+;+;)时得到奇怪的结果

C 在printf函数中使用增量运算符(+;+;)时得到奇怪的结果,c,undefined-behavior,C,Undefined Behavior,我正在gcc编译器上执行这个c程序,结果很奇怪。 那怎么可能呢 代码: #包括 int main() { int i; i=10; printf(“%d%d%d”,i++,i++,i);//输出:11 10 12 返回0; } 根据我,结果应该是10 11 12,但我得到11 10 12。 在C++中,函数参数的求值顺序是怎样的?< p>,如果在一个特定函数中使用增量运算符多次,则没有正确的答案,它们可以按任意顺序来计算。 < P>请熟悉“强”序列点< /强>的概念。只有在这样定义的序列点才能

我正在gcc编译器上执行这个c程序,结果很奇怪。
那怎么可能呢

代码:

#包括
int main()
{
int i;
i=10;
printf(“%d%d%d”,i++,i++,i);//输出:11 10 12
返回0;
}
根据我,结果应该是10 11 12,但我得到11 10 12。

在C++中,函数参数的求值顺序是怎样的?

< p>,如果在一个特定函数中使用增量运算符多次,则没有正确的答案,它们可以按任意顺序来计算。

< P>请熟悉“强”序列点< /强>的概念。只有在这样定义的序列点才能保证执行先前评估的所有副作用。函数的参数列表之间没有序列点。所以,它会导致未定义的行为。

这是未定义的行为。我明白你说的,但如果参数是随机计算的,那么每次执行程序时,我都会根据参数的计算顺序得到不同的输出,但每次执行程序时,我都会得到相同的结果,为什么?@ineevparmar:undefined!=拉姆多利。
#include<stdio.h>
int main()
{
  int i;
  i =10;
  printf(" %d %d %d  ",i++,i++,i);  //output : 11 10 12
  return 0;
}