我知道在c标准(不是c ++)中没有明确定义后缀/前缀增加/减少操作。增量和减量在不同的编译器中的工作方式不同。我对其中两个Visual Studio和GCC感兴趣。例如,据我所知,以下代码将给出不同的结果。
#include <stdio.h>
int main() {
int a = 3, b = 5;
int x = a++*++a;
int y = ++a*a++;
int z = ++a*--b + a++*b--;
printf("%d, %d, %d, %d, %d", a, b, x, y, z);
return 0;
}
这主要表现在相同等式中的后缀和前缀运算干扰时。我不明白规则。两种编译器有什么区别?他们如何处理?