有人可以解释为什么以下代码的输出是**
?
#include <iostream>
using namespace std;
int main()
{
for (float val = -10.0; val < 100; val = -val * 2)
{
if (val < 0 && -val >= 40)
break;
cout << "*";
}
return 0;
}
请你一点一点地解释一下吗?非常感谢
答案 0 :(得分:0)
当你的循环迭代三次,但cout语句只执行两次,你得到的输出为**。
迭代1:val = -10.0 (For循环条件为true且block为false)
迭代2:val = 20.0 (For循环条件为true,如果block为false)
迭代3:val = -40.0 (For循环条件为true,但如果block为true)
因此,在第三次迭代时,如果条件变为真,则循环退出。
答案 1 :(得分:0)
-10
if ((-10 < 0) && (+10 >= 40))
是假的
*
已打印(-10 < 100)
为真
val = -val * 2
val = +10*2 = 20
20
if
为假,(20 < 0)
语句短路为false
*
已打印(20 < 100)
为真
val = -20*2 = -40
-40
if((-40 < 0) && (+40 >= 40))
是真的