一般表达式的话那么是先看优先级,优先级相同那么然后再看结合性,而结合性大多数人不太会去记忆的,所以这是我们常常用括号来避免二义性,注重程序通用性。
但是你这个++i++却跟前面我说的没太大关系,你的++i++ 与 ++(i++)是一个意思。
后置++优先级是高于前置++的,那么自然是先i++,i++返回的是++之前的一个temp值,我相信这个值在编译时候应该是这么设置一个变量的,下面两个应该是等价的。
即i++ 等价于 int temp=i;i++;//我个人理解
而temp是不具有左值功能的,只能作为右值使用,而对于右值进进行前置++操作是语法无法忍受的。
这里只是一个左值和右值的问题。
不好意思,记成c++的优先级了,那么c中前置+和后置+优先级相等,那么就按结合性来了。
[
本帖最后由 baobaoisme 于 2011-5-11 22:38 编辑 ]