关于二级c语言i++与++i的问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 00:11:52
下述题的具体解决方法,步骤,这类题到底怎么解啊:
1.如果int i=3,则k=(i++)+(++i)+(i++);执行后k=(),i=()?
【答案】12,6;
2.语句int m,j=5;m=(j++)+(++j)+(j++);执行后m,j值分别为()?
【答案】18,8
3.语句int m,j=3;m=(++j)+(++j)+(j++);执行后m,n值为()?
【答案】15,6
4.语句int m,j=3;m=(++j)+(++j)+(++j);执行后m,n值为()?
【答案】??

把++i都放当时语句前面i++放后面,比如
k=(i++)+(++i)+(i++);
转换为
++i;
k= i+i+i;
i++;
i++;

1----3+5+5=13,i=6
2----5+7+7=19,j=8
3----4+5+5=14,j=6
4----4+5+6=15,j=6

不知道你的答案哪来的,自增量运算特点是++i,先加减后使用,
i++,先使用后加减.

比如i=3.这个表达式的值(i++)就是3,而i再变成4.
(++i)的值是4,而i也是4.

4、18 6 对于这样的计算,先算所有的++i,再算普通运算,最后算i++ ,如第一题相当于

烦,这个编译器不一样,结果就不一样。
我最烦计算机等级考试,都TM是垃圾。

1) i先自加1次(++i)为4, 然后取3个i 相加, k的值为12
...i再自加2次为6
2) j先自加1次(++i)为6, 然后取3个i 相加, k的值为18
...i再自加2次为8
3) j先自加2次(++j)为5, 然后取3个j 相加, m的值为15
...j再自加1次为6

以上三个表达式不分编译器结果一样.

4) 该表达式不同编译器有歧义(不同的结果).
...TC2.0(TC3.0)遵循规则:
......j先自加3次(++j)为6, 然后取3个j 相加, m的值为18
...Visual C++:
......有点乱,结果为m=16,j=6,我也理解不了

自增量运算特点是++i,先加减后使用,
i++,先使用后加减.