作为考试的话:
1、求值顺序是从左到右
2、i++是先取值后作自增,++i则相反
j=(i++)+(++i)+(i++);
3 5 5
第一个数是3因为i++是先取值3,再将i改成4
第二个数是5是因为这时的i已经是4了,而++i要先将i从4变成5再取值
第三个数是5是因为i++要先取值5,然后i从5再变成6。
结果13
这是教科书的解释。
在实际编程中,这个式子的结果取决于编译器,永远不要写这样的代码。
结果是12!!!
不管多少个i++,都是到该语句结束后也就是分号后才执行自加1的。多少个i++,分号后就执行多少次自加1 !!!
你的程序结果j=12, i=6.
因为对于一些程序段不同的编译器的编译原理不一样,比如说,有的是从左边向右计算,有的是从右向左计算。你给的这类的程序,只有考察你对i++和++i 的不同时才可能用到,真正解决问题时,程序员是不会使用的,不易读,不易理解。
不同的编译器是不一样,反正我是用的vc6.0的编译器,你就按这个运行结果来吧
i++中,i先参与运算,再执行自加
++i中,i先自加再参与运算