A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© naceyeve 中级黑马   /  2015-11-2 23:56  /  775 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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


12 个回复

倒序浏览
哈哈.挺速度的..这道题还是热的呢.就给你贴上了.
回复 使用道具 举报
5啊    ++在后面不改变原值的
回复 使用道具 举报
i++ 之后又赋值给i  也是等于将i 的初始值赋给 i
回复 使用道具 举报
perfect!
回复 使用道具 举报
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  

希望同学们不要混淆了

点评

表达式的值为什么一个是5一个是6 ,没说清吧,  发表于 2015-11-3 15:42
回复 使用道具 举报
好像有点头绪了
回复 使用道具 举报
雨魂 中级黑马 2015-11-3 15:26:57
8#
先赋值再++
回复 使用道具 举报
徐慧shanghai 发表于 2015-11-3 10:06
i++和 ++i 的根本区别在一个是先使用值再 进行 自增  和 先自增后再使用值
i=i++   就是  先使用 i的值  再 ...

懂了 受教了!
回复 使用道具 举报
就是先 i++ 表达式的值先赋值给 i 然后在做计算
回复 使用道具 举报
徐慧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这两个表达式的值是不一样的



回复 使用道具 举报
都是大神,来学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马