我写了一个简单的程序int a = 10
我期待的o / p是10 9 9
printf("a++:%d \t a:%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
任何人都能解释一下这个吗?
答案 0 :(得分:3)
您遇到了未定义的行为,因为多个带有副作用的表达式没有sequence points inbetween。
无法保证评估哪些顺序函数参数,因此无法在此处“预期”某些内容(除非您编写了编译器)。