此段程序运行结果会是哪个啊?  
  public class text
 {
      public static void main(String[] args) 
     {
        int x= 1, y = 6;
        while (y--==6) {x--;}
        System.out.println("x=" + x +" ,y =" + y);
     }
 }
A:程序能运行,输出结果:x=0,y=5 
B:程序能运行,输出结果:x=-1,y=4
C:程序能运行,输出结果:x=0,y=4 
D:程序不能编译

解决方案 »

  1.   

    c吧
    y==6 x-- y--
    y!=6 y--
      

  2.   

    C:程序能运行,输出结果:x=0,y=4 y--==6第一次为true,执行x--,此时x=0;
    因为y--是先运算,再--,第一次运算完,y=5;x=0然后再回去执行while的条件判断,条件为false,while语句不再继续执行,但是y--还是要执行,这样y=4;最终就是x=0,y=4 
      

  3.   

    菜鸟跟帖求教。
    就是说while语句里面那个即使是false,里面的表达式也要计算多一次么?
      

  4.   


    不会,while判断是false的话  循环不执行
    第一次是true的,所以会执行
    另外:y--==6  这里先比较,后做--
    如果是--y==6的话,那就先做--后比较,这样就会输出x=1,y=5了
      

  5.   


    啊~是不是就是当第二次执行y--的时候判断了y--==6是false才跳出循环的?
    所以这个时候再输出y就变成4了?我糊涂了还以为第二次判断y--==6的时候如果是false  y就保持y==5。。不用进行第二次y--
      

  6.   

    那再问个问题啊 
    算术 关系 逻辑 位 赋值 几种运算符的优先级顺序是怎么排列呀?
    在Java php c#等中都是一样的顺序吗?
      

  7.   


    public class text
    {
    public static void main(String[] args) 
    {
    int x= 1, y = 6;
    while (y--==6) {x--;}
    System.out.println("x=" + x +" ,y =" + y);
    }
    }是优先级的问题。y--是先用y原来的值与6比较之后,再自减一。第一次满足相等条件,循环体执行一次,x变为0,y变为5。下一次进行判断先用y的值5与6比较不满足条件,循环体不再执行,但是y--会执行,y的值变为4。
      

  8.   

    C:程序能运行,输出结果:x=0,y=4
      

  9.   

    C
    step1:(While内条件判断语句)y--    //y=5;
    step2:(条件判断为真,执行循环体)x-- //x=0;
    step3:(While内条件判断语句)y--    //y=4;
    setp4:(条件判断为假,退出循环体)
    setp5:(继续向下执行)打印
      

  10.   


    已经解释的很详细了。
    楼主搞不清的可能就是--y 跟 y--的区别,其实如果把这两个表达式放在两行独立的代码中,他们其实是没有任何区别的,区别就是他们放在表达式中的时候不同。比如说 x = y-- 就是先把y值赋给x,然后y = y-1;而
    x = --y  是先进行y = y-1 然后再把y值赋给x!
      

  11.   

    C了
    while (y--==6) {x--;}
    y--效果y=5但是返回y之前的值6
    所以y--==6是成立的x-- x=0
    y--返回的是5结果y=4,x--不执行最后的效果是x=0 y=4
      

  12.   

    第一次 y=6 x=1,当判断while语句成立时,y和x都被减一;
    第二次 y=5 x=0, 当判断while语句不成立时,while中的语句块不会被执行,y被减一,x没有变这个时候循环退出,输出 y=4 x=0我太啰嗦 .......