黑马程序员技术交流社区

标题: 这个题是怎么思考的 [打印本页]

作者: zhanglaoda1989    时间: 2015-5-19 22:55
标题: 这个题是怎么思考的
int x = 1,y = 1;

if(x++==2 && ++y==2)
{
        x =7;
}
System.out.println("x="+x+",y="+y);
结果   x=2,y=1

作者: tanzhixue    时间: 2015-5-19 23:07
x++是先赋值 后++  所以x++==2是false因为先拿1和2比 比完之后才+1  所以 x的值是2&&前面false右边不执行
作者: 青少年    时间: 2015-5-19 23:17
给int类型X赋值1,Y赋值1,如果X++==2则后边的不运算因为是&&双与前边正确所以后边不运算y值不变。x=7没有参与运算所以最后值是X=2,y=1.,
作者: Advances    时间: 2015-5-19 23:28
基础知识弄懂了就会分析了
作者: 刘冬    时间: 2015-5-20 10:40
++在后面时先赋值才运算,而且&&具有短路的功能,后面的不进行运算
作者: 新缘    时间: 2015-5-20 11:35
++和--的用法
                a:他们的作用是自增或者自减
                b:使用
                        **单独使用
                                放在操作数据的前面和后面效果一样。
                                a++或者++a效果一样。
                        **参与操作使用
                                放在操作数的前面:先自增或者自减,再参与操作
                                                int a = 10;
                                                int b = ++a;
                                        放在操作数的后面:先参与操作,再自增或者自减
                                                int a = 10;
                                                int b = a++;
作者: hzhzhen    时间: 2015-5-20 12:25
这个不难吧,你跟着思路去想就可以啦
作者: hellotaomi    时间: 2015-5-20 16:55
一楼就是正解了,所以就不多啰嗦了
作者: iamnoten    时间: 2015-5-20 17:08
太绕了,没必要纠结这种题
作者: 繁复    时间: 2015-5-20 17:12
这个就是运算符的优先级问题,X++的运算优先级比==低,所以x++==2这个条件不成立,在比较过后才会给x赋值,而&&的特性就是后面的运算不赋值
作者: lizhi    时间: 2015-5-20 17:27
双与如果符号左边是false,右边就不再执行了,所以x自加了,y没执行到
作者: 嘎嘎鸭子    时间: 2015-5-20 23:26
                                        放在操作数的后面:先参与操作,再自增或者自减




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