原式相当于这样 i/=i; i *=i; i++; 后++ 的优先级比 *= /= 低

解决方案 »

  1.   

    后++是在整个表达式计算之后才计算的,如果你要得到1可以象下面这样写
    int a(0);
    int i=5;
    a=i*=i/=i++;
    再输出a的值为1
      

  2.   

    VC中前缀++是在整个表达式之前求值,而后缀++在整个表达式求值后再运算。
    比如:int      i = 0,    j;
    j = (i++) + (++i) + (i++);结果是 j = 3;编译器认为这个式子要:
    先把 i 自加一,
    再把 3 个 i 的当前值加起来放到 j 里去( 此时 i = 1 ),
    再把 i 自加两次。另外++与--的结果常与编译模式有关,留神啊。我是从来不把它们放到复合表达式里,吃的苦头太多了。还有:自反赋值运算符的优先级很低,仅高于逗号运算符。而++和--是很高的。