弄清楚此功能的作用是什么?

时间:2018-11-14 16:05:11

标签: c

我必须将此for循环重写为do while循环,但无法弄清楚它的作用。请帮助

for(;; done = (int) sum == 5
{if (done) break;
sum += 2.6;}

1 个答案:

答案 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

请注意,如果您定义了变量的类型并为其提供了初始值,这将更加清楚。