我必须将此for循环重写为do while循环,但无法弄清楚它的作用。请帮助
for(;; done = (int) sum == 5
{if (done) break;
sum += 2.6;}
答案 0 :(得分:3)
我们假设语法错误已解决,因此代码可以读取
for(;; done = (int) sum == 5)
{
if (done) break;
sum += 2.6;
}
现在此代码的工作方式如下:for
循环没有初始化表达式和测试表达式,因此它无条件开始执行。发生的第一件事是检查“标志” done
(我假设一个未定义的对象是一个int
,可能会初始化也可能不会初始化为零)。如果为真(非零),则代码退出for
循环。如果不是,则将2.6(double
)添加到sum
(我假设的未定义对象是double
,并且可能会或可能不会将其初始化为明智的值,或者一个数字)。当执行到达右括号时,将执行for
循环中的迭代语句,该语句将sum
与5进行比较(将sum
转换为整数值之后)并分配与done
进行比较(即1为true,0为false)。
将其转换为while
循环应该非常简单。只需按顺序执行这些步骤。请注意,由于要执行的第一段代码是检查if(done)
,因此与while
循环相比,代码更自然地适合于简单的do-while
。
请注意,如果您定义了变量的类型并为其提供了初始值,这将更加清楚。