C计算问题,结合性,优先级,,,,,,

int i = 1;
++i * ++i为什么是9而不是6呢

不知道你这个9是你的编译器的结果还是书上的答案。
在一个式子里对同一个变量进行++是个未定义的行为,不同的编译器结果很可能不同。
得到9的编译器,一般来说是进行优化过的,并不是如楼主所想2*3,而是3*3
这里涉及到压栈和弹栈的操作,编译器压入的是i的引用,而并不是数值,所以第二个++会使得*左边的i也自加1
参考:http://bbs.csdn.net/topics/370153775

++是先加后用,两次++后变量i==3,3*3==9啊,记住i是存储在栈区的,用i标识

不同的编译器结果会有差异,与编译器是否优化相关。

优先级是先加,在算乘,前面++i,i = 2,到这不算乘,算后面++i,这时i= 3,然后算中间的乘,就相当于两个i相乘,3*3 = 9