黑马程序员技术交流社区

标题: 写出以下语句执行后的结果 [打印本页]

作者: 杨立考    时间: 2012-9-24 21:01
标题: 写出以下语句执行后的结果
int x = 1,y = 1;
if(x++==2 & ++y==2)  {
       x =7;
}
System.out.println("x="+x+",y="+y);
作者: 赵宇    时间: 2012-9-24 21:04
输出结果是 x=2,y=2

作者: hello_world!    时间: 2012-9-24 21:12
结果是:x=2,y=2
作者: hello_world!    时间: 2012-9-24 21:12
结果是:x=2,y=2
作者: hello_world!    时间: 2012-9-24 21:13
结果是:x=2,y=2
作者: 张小龙    时间: 2012-9-24 22:21
没什么好说的,太简单了
x=2,y=2
作者: 黄佳    时间: 2012-9-24 23:30
(x++==2 & ++y==2)


  前面半句:    x先做运算然后自增   1==2 结果就是 flase  因为的单 &  所以 虽然整个式子 有flase 了结果已经为 flase了   ,但是 单& 后面的表达式也要做运算 , 所以 y 也自增了

所以 if 条件不成立  里面的表达式 不执行      x 和 y 各做了一次 自增    输出结果为    x=2 , y=2
作者: 佘天宇    时间: 2012-9-25 00:21
  1. class  Text3
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x = 1,y = 1;


  6.                 //这里的x先是将x=1的值和2判断,判断结果是false,然后再自加1,x的值是2.
  7.                 //而后面的y是先自加1,这时候值变成了2,在进行"==2"的判断,判断结果true
  8.                 if(x++==2 & ++y==2)//(false&true)结果还是false,所以if中的语句不执行。
  9.                 {
  10.                         x =7;
  11.                 }

  12.                 //在if的条件表达式中运行后,x和y的值都变成了2,所以输出结果是2,2

  13.                 System.out.println("x="+x+",y="+y);

  14.         }
  15. }
复制代码

作者: 杜正华    时间: 2012-9-25 09:40
  1. package com.aduvm.practice;

  2. public class IfDemo1 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args)
  7.                         {        
  8.                 int x = 1,y = 1;
  9.                 if(x++==2 & ++y==2)  {  //首先判断左边1==2?不等于所以左边结果为0,x=2,再判断2==2吗?右边结果为1,y=2
  10.                        x =7;        //由于0&1的值为0即为假,所以if条件语句里的程序不执行
  11.                 }
  12.                 System.out.println("x="+x+",y="+y);   //输出x=2,y=2
  13.    
  14.                         }
  15.                 }
  16.                
复制代码

作者: 李健_8    时间: 2012-9-25 13:24
public  class A{
                public static void main(String[] args) {       
                        int x = 1,y = 1;
                        if(x++==2 & ++y==2)  {
//亮点就在于if判断语句中的x++和++y,一个是先赋值后计算,一个是先计算后赋值,if语句执行不了,直接跳过
                               x =7;
                        }
                        System.out.println("x="+x+",y="+y); //x=2,y=2
                }

}
作者: 陈琦    时间: 2012-9-25 15:25
(x++==2 & ++y==2) 我感觉拆开来看比较好:(x=x+1==2 & (y=y+1)==2) 所以结果是x=2,y=2
作者: chjxs    时间: 2012-9-25 21:21
这个就是理解
1)  ++i 与 i++ ;
     ---->  ++只是改变自变量,表达式的值与++无关。一个是赋值后i变量自加,另一个是i变量自加后再赋值。
2)  &运算;
     ——> &没短路功能。&&有。




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