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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© roybill 中级黑马   /  2015-5-12 21:38  /  895 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问这道题得到答案的步骤是怎样的?我对if里面的条件还是不太理解,谢了
int x = 1,y = 1;
if(x++==2 & ++y==2)
{
  x =7;
}
System.out.println("x="+x+",y="+y);  

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

17 个回复

倒序浏览
如果没错的话,应该是if循环之后x的值不存在,while可以存在
回复 使用道具 举报 0 1
x++ 先运算,后自增
++x 先自增,后运算
if(x++==2 & ++y==2)
这里&的左边,x先执行了与2的判定,再自增 结果为false
     &的右边,y先自增,再与2进行判定,结果为true
式子的整个结果为 false&true  判定结果为false。那么输出为x=2,y=2

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
陈明佳 发表于 2015-5-12 21:53
如果没错的话,应该是if循环之后x的值不存在,while可以存在

没用到循环语句呢。。。
回复 使用道具 举报
class Tet
{
        public static void main(String[] args)
        {
                int x = 1,y = 1;
                //x++==2:先判断x==2是否相等,结果为flase,然后x自增,所以:x=2;
                //因为连的是&,所以还要判断后面的++y==2,先将y自增,y=2,再判断是否等于2,结果为true。
                //false & true = false,所以不执行if中的代码。
                //所以打印结果应该是x=2,y=2。
                if(x++==2 & ++y==2)
                {
                         x =7;
                }
                System.out.println("x="+x+",y="+y);
        }
}
回复 使用道具 举报
csu050416 发表于 2015-5-12 22:02
class Tet
{
        public static void main(String[] args)

很详细的解答,谢谢了
回复 使用道具 举报
if中的条件x++ == 2指第二指先将当前x的值和2 进行“==”运算,之后x=x+1,这是因为x++中,是先使用当前x值完成表达式的运算,再将x加1,虽然“++”的优先级高于“==”,但此时x==1,所以'&'前面的条件错误,x变为2。
因为使用的是'&'而非"&&",所以'&'后面的条件++y  == 2也要运算。++y 则指先将y加1,再参与运算,所以此时参与"=="运算的y值是2。
最后因为if中的语句没有执行,所以x==2,y==2。
如果在条件中使用"&&"而非'&',则++y==2就不会执行,这是因为x++==2已经是false,所以不需要在执行后面的条件判断。
回复 使用道具 举报
就是&与&&的区别,仔细想象就明白了
回复 使用道具 举报
这个  if条件句第一个x++==2是false,他是先提取x的值与2比较然后x再自加为2||后面的++y==2是true,他是y先自加然后再与2做比较。
回复 使用道具 举报
x=2,y=2,简单啊
回复 使用道具 举报
参考一下!
回复 使用道具 举报
zzlin 中级黑马 2015-5-13 18:59:47
12#
&左右两边都要运算
回复 使用道具 举报
zzlin 中级黑马 2015-5-13 19:03:05
13#

&左右两边都要运算。
1、判断x是否等于2,结果为false,然后自增。
2、y先自增,然后判断是否等于2,结果为true。
结果 x=2,y=2
回复 使用道具 举报
& 返回结果是真 假  如果是真 则 x=7  详情请看我的帖子  http://bbs.itheima.com/thread-195930-1-1.html
回复 使用道具 举报
陈明佳 发表于 2015-5-12 21:53
如果没错的话,应该是if循环之后x的值不存在,while可以存在

if怎么循环??~~
回复 使用道具 举报
但与&无论前后真假都会执行,在就是前++和后++的区别,其实这个题没什么区别对结果
回复 使用道具 举报
Cat 中级黑马 2015-5-13 21:39:21
17#
学习一下~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马