黑马程序员技术交流社区

标题: 谁能截出这道题? [打印本页]

作者: 沙子    时间: 2014-12-16 22:23
标题: 谁能截出这道题?
public class Test {
    public static void main(String[] args) {
       
        int i =2;
        i=(i++) +3;
        System.out.println(i);
    }

}

请问I的值为多少?解题过程是什么?
作者: qig123    时间: 2014-12-16 22:27
i 应该等于5
解题过程:i++,是先把i的去取出来放在内存中的某个地方,然后和3相加,接着i++才自增,但是和3相加的数是没有自增的,所以应该是等于5
作者: 杜庆娇    时间: 2014-12-16 22:33
答案是5,看一下优先级
作者: beyondskyqiu    时间: 2014-12-16 22:43
i = 5;
解题过程:当++在i的后面时,是将i的自增动作放入内存中,同时将i的值提出来参与运算,因为你的赋值语句正好又是将变化了的i值赋给i,所以在i+2的结果运算出来之后,赋给i,这时i在内存中自增的动作被赋值动作所覆盖了。所以i自增的动作并没有发生。所以i最终的值是5。
作者: 魏文杰    时间: 2014-12-17 00:37
还是一样的问题,出现好多次了,,,你可以吧b++整体看作有值,就是2,,,而b的值加之后是3




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