为了账号安全,请及时绑定邮箱和手机立即绑定

想问下这结果怎么出来的,m++与++m什么区别


http://img1.sycdn.imooc.com//5ac9a2380001906510801812.jpg

正在回答

1 回答

首先我觉得这个答案有问题,是错的。

正确结果是a=12, b=13, c=15

m++就是m先参与运算再自增1

++m就是m先自增1再参与运算

所以例子里的运算过程是这个样子的

m = 3, n = 3, p = 3;

a = (m++) + (m++) + (m++);  

a = (3) + (3+1) + (4+1) = 12;  

注意这里第一个(m++)是3,也就是所说的先运算再加一,所以第二个(m++)中的m就要加上上一个m++的+1,也就变成了3+1=4,以此类推第三个m就变成了4+1=5;至此运算结束得出a=3+4+5=12;而最后一个m++自加后为5+1=6;输出m=6

这里提一下,无论是m++还是++m,都是进行了三次加,所以这三m,n,p最后的输出就都会等于6


b = (n++) + (++n) + (n++);

b = (3) + (1+3+1) + (5) = 13;

这里第一次n=3,第二次n=n加上第一个n的加一和自己的运算前自加1,也就是等于5,第三个运算前不变所以也是5


c = (++p) + (++p) + (++p);

c = (1+3) + (1+4) + (1+5) = 15;

0 回复 有任何疑惑可以回复我~
#1

慕数据0194010 提问者

运行结果是 12 13 16
2018-04-08 回复 有任何疑惑可以回复我~
#2

qq_淡墨文竹_0 回复 慕数据0194010 提问者

我不太知道C语言里的机制是什么样的,也可能和C语言的环境有关,如果按照正常逻辑的话应该就是15 你可以这样写然后输出看一下 c = (++p) d = (++p) e = (++p) f = c + d + e ; 然后分别输出c,d,e,f,看他们的值 不过有一点就是这种运算在真正编程时是基本不会出现的,这只是为了强化理解而出的题 可能就是用的循环是出现++用法,只要记住m++就是m先参与运算再自增1,++m就是m先自增1再参与运算就行了
2018-04-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

想问下这结果怎么出来的,m++与++m什么区别

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号