我正在使用下面的自由文本来学习java的介绍,我无法理解代码段之间的区别:
http://math.hws.edu/eck/cs124/downloads/javanotes7-linked.pdf
示例1
int x;
x = -1;
if (x < 0)
x = 1;
else
x = 2;
示例2
int x;
x = -1;
if (x < 0)
x = 1;
if (x >= 0)
x = 2;
在示例1 中,x为1;在示例2 中,x是2。
在右边,如果-1不是&gt;或者= 0然后输出不应该是1?有人可以解释为什么输出会改为2?
答案 0 :(得分:5)
评估第二个if语句后,C
第一个语句已生效 - 因此x
的值现在为1.
x
if (x < 0)
x = 1;
if (x >= 0) //x is 1 because you've already evaluated the above!
x = 2;
关键字创建互斥分支:只能执行一个分支。所以,如果你有这个,行为将如你所愿:
else
答案 1 :(得分:2)
在示例1中,只会执行一个语句x = 1;
或x = 2;
,因为它使用if...else
语句。
在示例2中,两个语句都将被执行,因为它使用两个单独的if
语句,并且因为它们在评估时都是正确的。
答案 2 :(得分:0)
在第二个例子中;首先,你要经历第一个if
条件:
x = -1;
if (x < 0) x = 1;
x小于0,因此x变为1。
当你转到第二个if
条件时:
if (x >= 0) x = 2;
x 仍 1,且1大于0,因此x变为2.