请问下面的程序的执行结果的原因的?
   int i = 5;
   printf("%d%d%d%d",++i,--i,i++,i--);
   事先声明不是 6556,而是5455.

解决方案 »

  1.   

    恭喜楼主,你发现了一个BUG!可以向微软提交报告了:
    int main(int argc, char* argv[])
    {
    int i = 5; printf("%d%d%d%d%d%d\n",i++,i++,i++,i++,i++,i++);
    return 0;
    }输入结果是:55555
    而在TC里面却是98765
      

  2.   

    我想知道printf()是怎样干活的。
    没错,正如二楼所说,","是从右向左的,如此得出的结果应该是5445!
    三楼说的问题也正是问题之所在。#++和++#到底是怎样干活的,我想书本上的解释没有到位。
    据我推断#++如果没遇到";"是不会改变自身值的(仅供参考)