此代码使用&&在for循环条件下。它迭代4次,得到答案“sum = 20”。我认为它会迭代5次,因为&&和条件为真,当右侧变为false时结束循环。
基本上我的问题是为什么它迭代4次而不是5次,使得“sum = 30”?感谢
`int[] lst = {1,2,3,4,5,4,3,2,1};
int sum = 0;
for (int frnt = 0, rear = lst.length - 1;
frnt < 5 && rear >= 5; frnt++, rear--){
sum = sum + lst[frnt] + lst[rear];
System.out.println("frnt: " + frnt);
System.out.println("rear: " + rear);
System.out.println();
}
System.out.print(sum);`
答案 0 :(得分:0)
只有在已知整个表达式的值时才会发生短路。
对于Logical AND运算符(&amp;&amp;),如果左侧已经为假,则右侧评估的内容无关紧要,因为整个表达式已经为假。如果左侧为真,则右侧的值确定表达式的值。由于在评估之前不知道,因此必须对其进行评估。
对于逻辑OR运算符(||),反之亦然。如果表达式的左侧为真,那么右侧是什么并不重要,表达式为真,因此不评估右侧。如果左侧为假,则表达式的值取决于右侧,因此必须对其进行评估。