黑马程序员技术交流社区

标题: 小题目,有意思,几人能答对 [打印本页]

作者: 陈捷旋    时间: 2015-3-21 10:18
标题: 小题目,有意思,几人能答对
class Test
{
        public static void main(String[] args)
        {
                int x=5;
                x=x+(x++)+(++x);
                System.out.println(x);
        }
}


class Test
{
        public static void main(String[] args)
        {
                int x=5;
                x=(++x)+(x++)+x;
                System.out.println(x);
        }
}

结果会是多少呢?两个X都是几?不编译你能算对不?
作者: Etby    时间: 2015-3-21 10:22
16 19  不知道对不对
作者: 小甲鱼    时间: 2015-3-21 10:41
5+5+7 = 17  ?
6+6+7 = 19  ?
作者: 一般现在时    时间: 2015-3-21 10:45
同意楼上的!运行结果是多少呢?

作者: One_M    时间: 2015-3-21 10:47
17...19....
先增后加   先加后增~!!
作者: 王振光    时间: 2015-3-21 11:37
557  667话说不用加括号
作者: q8893616    时间: 2015-3-21 11:38
17 19 先算括号内的  然后再给x再算
作者: 陈捷旋    时间: 2015-3-21 12:29
小甲鱼 发表于 2015-3-21 10:41
5+5+7 = 17  ?
6+6+7 = 19  ?

对的,思路很清晰
作者: 明羽果果    时间: 2015-3-21 13:34
17 19 (x++)参与运算的是原来的值,出了括号就是自增以后的值
作者: hamesksk    时间: 2015-3-21 13:40
好变态的题,我完全晕了,看到答案才想起怎么回事
作者: 无辜被杀害    时间: 2015-3-21 13:42
第一个为什么是17不是19啊
作者: 胡谭龙    时间: 2015-3-21 14:22
本帖最后由 胡谭龙 于 2015-3-21 14:33 编辑

第一个Test先执行(x++),(x++)=5,x=6        然后执行(++x),(++x)=7,x=7
        所以最中x=5+5+7=17
第二个Test先执行(++x),(++x)=6,x=6
        在执行(x++),(x++)=6,x=7
        所以x=6+6+7=19

作者: 翰墨    时间: 2015-3-21 14:47
x++表示先赋值 然后在自增
++x先自增 在赋值

作者: 极光_CDY    时间: 2015-3-21 14:50
胡谭龙 发表于 2015-3-21 14:22
第一个Test先执行(x++),(x++)=5,x=6        然后执行(++x),(++x)=7,x=7
        所以最中x=5+5 ...

过程很清楚,谢谢
作者: GaoTao    时间: 2015-3-21 15:19
17 和 19 ++x是先将x+1然后运算 , x++是先运算后将x+1
作者: tinyvampire    时间: 2015-3-21 15:41
18,16,对不?
作者: 星河    时间: 2015-3-21 17:27
17         
19              
作者: 蓝玉    时间: 2015-3-21 18:03
不错,思路不清楚,很容易出错
作者: 唐泉银    时间: 2015-3-21 18:42
确实是17 19
作者: 温大帅    时间: 2015-3-21 22:54
17,19不知道对不对




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