此段程序运行结果会是哪个啊?
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:程序不能编译
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:程序不能编译
y==6 x-- y--
y!=6 y--
因为y--是先运算,再--,第一次运算完,y=5;x=0然后再回去执行while的条件判断,条件为false,while语句不再继续执行,但是y--还是要执行,这样y=4;最终就是x=0,y=4
就是说while语句里面那个即使是false,里面的表达式也要计算多一次么?
不会,while判断是false的话 循环不执行
第一次是true的,所以会执行
另外:y--==6 这里先比较,后做--
如果是--y==6的话,那就先做--后比较,这样就会输出x=1,y=5了
啊~是不是就是当第二次执行y--的时候判断了y--==6是false才跳出循环的?
所以这个时候再输出y就变成4了?我糊涂了还以为第二次判断y--==6的时候如果是false y就保持y==5。。不用进行第二次y--
算术 关系 逻辑 位 赋值 几种运算符的优先级顺序是怎么排列呀?
在Java php c#等中都是一样的顺序吗?
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。
step1:(While内条件判断语句)y-- //y=5;
step2:(条件判断为真,执行循环体)x-- //x=0;
step3:(While内条件判断语句)y-- //y=4;
setp4:(条件判断为假,退出循环体)
setp5:(继续向下执行)打印
已经解释的很详细了。
楼主搞不清的可能就是--y 跟 y--的区别,其实如果把这两个表达式放在两行独立的代码中,他们其实是没有任何区别的,区别就是他们放在表达式中的时候不同。比如说 x = y-- 就是先把y值赋给x,然后y = y-1;而
x = --y 是先进行y = y-1 然后再把y值赋给x!
while (y--==6) {x--;}
y--效果y=5但是返回y之前的值6
所以y--==6是成立的x-- x=0
y--返回的是5结果y=4,x--不执行最后的效果是x=0 y=4
第二次 y=5 x=0, 当判断while语句不成立时,while中的语句块不会被执行,y被减一,x没有变这个时候循环退出,输出 y=4 x=0我太啰嗦 .......