6个回答
展开全部
这种题很垃圾的,因为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中前缀++的原理,并没有错,不同编译器得到不同结果,如果哪里的考试出这种题,那真的很垃圾。
得到15也是正确的,
因为按照前缀自加的原理是:先自加再求表达式,那么(++i)+(++i)+(++i)很明显,让i自加吧,自加后再求i+i+i这样就得到15了
得到13也正确
原理楼上有讲了,先计算前面2个表达式(++i)+(++i)得到8,再来和后面的计算就得到13了
得到12也正确
先自加第一个++i得到3然后再求表达式,也就是求第1个加号,这时又遇到前缀加,i再自加得到4所以第一个加号后得到7,然后再和最后一个加号相加就得到12了
以上三种算法都满足C中前缀++的原理,并没有错,不同编译器得到不同结果,如果哪里的考试出这种题,那真的很垃圾。
展开全部
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
1、从左向右数,第一个(++i),执行完毕后,内存中i为3
2、第二个(++i),执行完毕后,内存中i为4
3、第三个(++i),执行完毕后,内存中i为5
4、5+5+5赋给j,内存中j为15
所以最后结果i为5,j为15
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i=5;j=12;
第一次i++后i=3,第二次i++ 后i=4,第三次i++后i=5,所以j=3+4+5=12
第一次i++后i=3,第二次i++ 后i=4,第三次i++后i=5,所以j=3+4+5=12
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
j=12,
i=5,
i依次变为3.4.5
i=5,
i依次变为3.4.5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询