C语言,i=2; j = (++i)+(++i)+(++i) 最后i和j的值是多少,详细过程

j=13,只要详细过程... j=13,只要详细过程 展开
 我来答
黄邦勇帅哥哥
推荐于2018-05-08 · TA获得超过3987个赞
知道大有可为答主
回答量:1199
采纳率:100%
帮助的人:474万
展开全部
这种题很垃圾的,因为C没有对这种类型进行规范,因此不同编译器就有不同的算法,如果是自已编程一定不要这样写
得到15也是正确的,
因为按照前缀自加的原理是:先自加再求表达式,那么(++i)+(++i)+(++i)很明显,让i自加吧,自加后再求i+i+i这样就得到15了
得到13也正确
原理楼上有讲了,先计算前面2个表达式(++i)+(++i)得到8,再来和后面的计算就得到13了
得到12也正确
先自加第一个++i得到3然后再求表达式,也就是求第1个加号,这时又遇到前缀加,i再自加得到4所以第一个加号后得到7,然后再和最后一个加号相加就得到12了

以上三种算法都满足C中前缀++的原理,并没有错,不同编译器得到不同结果,如果哪里的考试出这种题,那真的很垃圾。
nijingfxx
2011-12-26 · 贡献了超过159个回答
知道答主
回答量:159
采纳率:0%
帮助的人:16万
展开全部
j = (++i)+(++i)+(++i)的执行顺序是:
1、从左向右数,第一个(++i),执行完毕后,内存中i为3
2、第二个(++i),执行完毕后,内存中i为4
3、第三个(++i),执行完毕后,内存中i为5
4、5+5+5赋给j,内存中j为15
所以最后结果i为5,j为15
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
驀然回首時
2011-12-26 · TA获得超过515个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:172万
展开全部
i的初始值是2
j = (++i)+(++i)+(++i);是将(++i)+(++i)+(++i)的结果赋值给j
对于不同的编译器, (++i)+(++i)+(++i)执行的顺序可能不同
但对于本题不影响,我们就按从左往右的顺序继续吧
刚编译了下,发现是这么算的
第一步计算:(++i)+(++i)
优先括号,i=4, (++i)+(++i) == 4 + 4 == 8
第二步计算:8 + (++i)
j = 8 + 5 = 13
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zx956592819
2011-12-26 · 超过20用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:47.8万
展开全部
i=5;j=12;
第一次i++后i=3,第二次i++ 后i=4,第三次i++后i=5,所以j=3+4+5=12
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郝在益
2011-12-26 · TA获得超过2079个赞
知道小有建树答主
回答量:1496
采纳率:54%
帮助的人:618万
展开全部
j=12,
i=5,
i依次变为3.4.5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式