首页 新闻 会员 周边

++i+i++

0
[待解决问题]

在C#里面 i=3 输出为8 求分析 各路大神求

 

那么如果我加入括号操作符

++i+(i++)

mojunguang的主页 mojunguang | 初学一级 | 园豆:190
提问于:2012-03-26 20:05
< >
分享
所有回答(3)
0

++的问题是老问题了,关键就是前++是运算前后++是运算后,比如return ++i;返回的是i+1,而return i++;返回的是i,所以步骤如下:

++3+3++

4+4++

return 8++;

today4king | 园豆:3499 (老鸟四级) | 2012-03-26 20:25
0

++i+i++这个问题主要是弄懂++i与i++的区别以及该表达式的运算顺序。现将表达式改写为:(++i)+(i++).

对于++i,该式是指先将i的值自加1,然后再取i的值。所以,该表达式的值为4,i的值也为4;对于i++,该表达式是指先取i的值做运算,再将i加1。因此,该表达式的值为4,而i的值却为3。

所以,(++i)+(i++) = 4+4 =8.  请注意,尽管这两个式子的值都为4,但i的值是不同的。

sarmn | 园豆:133 (初学一级) | 2012-03-26 21:05
1

这种计算结果依赖于编译器实现,一个小总结[cpp] 前置后置操作符总结

直观看的话有两个规律:

1) 在计算中,对于一个作用域内的前缀操作数(++i),替换为i的最终数值,对于后缀操作符替换为原数值。

2) 在依靠堆栈工作的方法中,对于一个作用域内的前缀操作符(++i),替换为i的最终数值,对于后缀操作符,按照入栈顺序分析。

对于++i+i++

i初始值3.有两个++操作符,按照规则1),将++i替换为i的最终数值为5,对于i++按照规则1)保持原数值3, 最终结果为8.

zsounder | 园豆:2819 (老鸟四级) | 2012-03-26 21:37

看来大家都理解得很透彻...

支持(0) 反对(0) mojunguang | 园豆:190 (初学一级) | 2012-03-26 21:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册