c语言中自加一的问题!

int i=5,q=(++i)+(++i)+(++i)等于多少
p=(++i)+(++i)+(i++)等于多少
g=(i++)+(i++)+(++i)等于多少
麻烦讲解仔细一点,这不是自右而左算么,为什么有些人讲起来式子还是自左而右算的呢

分别是30,22,37
++i是先i = i + 1,再进行其他运算;而i++是先进行其他运算,再i=i+1
int q=(++i)+(++i)+(++i);
可以看成 i= 5; i = i + 1; int q = i; i = i + 1; q = q + i; i = i + 1; q = q + i;

int p=(++i)+(++i)+(i++);
经过上一个语句,i=8; i = i + 1; int p = i; i = i + 1; p = p + i; p = p + i; i = i + 1;

int g=(i++)+(i++)+(++i);
经过上一个语句,i=11;int g = i; i = i + 1; g = g + i; i = i + 1; i = i + 1; g = g + i;

这个题目没有任何意义,这是未定义行为,不同编译器结果都不一样
不信你用cl.exe和gcc分别编译一下