黑马程序员技术交流社区

标题: 关于++的一个问题 [打印本页]

作者: naceyeve    时间: 2015-11-2 23:56
标题: 关于++的一个问题
int  i = 5;
i = i++;
问 i 的?
++的优先级是远大于 = 的,因此,计算机会优先++
在计算机的底层计算中,i 与 i++ 的关系类似于两个值互换,因此,
计算机会先生成一个第三方temp,将 i 的值赋值给temp ,
再 i++得到6,第三步将6赋值给 i ,最后temp 的值赋给 i,覆盖原来的值6
得出最后的结果为5.
从考试的角度来想,只要知道最终答案和解题方法即可,可以将i = i++;左边的 i 假想为a,
即 a = i++,   得a = 5, 即 i = 5



作者: 窝牛。    时间: 2015-11-3 00:09
哈哈.挺速度的..这道题还是热的呢.就给你贴上了.
作者: sshh11    时间: 2015-11-3 00:38
5啊    ++在后面不改变原值的
作者: zhangdazhi186    时间: 2015-11-3 08:10
i++ 之后又赋值给i  也是等于将i 的初始值赋给 i
作者: 吃饭工作睡觉    时间: 2015-11-3 08:40
perfect!
作者: 徐慧shanghai    时间: 2015-11-3 10:06
i++和 ++i 的根本区别在一个是先使用值再 进行 自增  和 先自增后再使用值
i=i++   就是  先使用 i的值  再对 i进行加1     这里面要弄清楚一个是表达式的值  和  i 的值   这个弄清楚就好了,这个temp是不存在的,你可以使用这个帮助理解         
首先  i++ 是一个表达式   和  i*5   i+10   i>100 等一样是表达式 ,表达式有一个自己的值   而 i++ 这个表达式的值 就是 5   但是这个表达式执行完  i 的值是  6  但是表达式的值是 5
上面这段话可能有同学理解不了  那么看一个简单表达式    i +10;  如果i是 5  那么这个表达式的值 是15  而 i 的值是 5
所以  i++ 是一样的,这个表达式的值是5  但是执行完后  i 的值是6 了
i=i++ 是把 i++ 这个表达式的值赋值给  i  所以 i的结果是 5
同样道理  i=++i;结果是 6就能解释了   ++i 这个表达式的值 是 6 所以 i是 6  

希望同学们不要混淆了
作者: 木叶纷飞    时间: 2015-11-3 13:15
好像有点头绪了
作者: 雨魂    时间: 2015-11-3 15:26
先赋值再++
作者: momoxixi    时间: 2015-11-3 17:50
徐慧shanghai 发表于 2015-11-3 10:06
i++和 ++i 的根本区别在一个是先使用值再 进行 自增  和 先自增后再使用值
i=i++   就是  先使用 i的值  再 ...

懂了 受教了!
作者: czcjyqm    时间: 2015-11-3 21:28
就是先 i++ 表达式的值先赋值给 i 然后在做计算
作者: 徐慧shanghai    时间: 2015-11-5 14:38
徐慧shanghai 发表于 2015-11-3 10:06
i++和 ++i 的根本区别在一个是先使用值再 进行 自增  和 先自增后再使用值
i=i++   就是  先使用 i的值  再 ...

为什么一个是 5 一个是  6 ?
i++ 这个是  5      ++i  这个是  6 应该都懂吧,在看这个问题的时候如果这个基础不懂就得先弄懂这个再看这个题目了

i++  是 先使用 值  再进行 对 i计算
++i是先进行 ++ 运算再使用值      


也就是说  i++  这个表达式的值  是  5   因为先去使用了这个 i 的值作为表达式的值 ,再对  i进行  ++
++i这个表达式的值是  6   是因为先进行   ++  得到的值作为表达式的值  就是  6

这一点不要和  i 的值搞混淆了
i++  和  ++i  这两个执行完    i的值 都是  6
至于为什么会有 5和 6 的区别那是  表达式的值  就是  ++i   和   i++ 这个表达式的值
如果这样还是觉得不明白的话可以看
i++ +1    和    ++i +1    这两个计算,并不是用  i的值去计算的 ,二十用一i++ 和 ++i 这个表达式的值去计算的    ,因为无论如何   i++ 或者  ++i执行完 i的值都已经 加 1 了 ,并且他们优先级是高于  +  号的 ,但是他们的值不同的  原因就在于  i++ 和  ++i这两个表达式的值是不一样的




作者: Sayman    时间: 2015-11-5 22:00
都是大神,来学习学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2