C 弄清楚这个函数的作用是什么?

C 弄清楚这个函数的作用是什么?,c,C,我必须将这个for循环重写为do-while循环,但我不知道这是做什么的。请帮忙 for(;; done = (int) sum == 5 {if (done) break; sum += 2.6;} 让我们假设语法错误已解决,因此代码可以读取 for(;; done = (int) sum == 5) { if (done) break; sum += 2.6; } 现在这段代码的工作原理如下:for循环没有初始化表达式和测试表达式,因此它无条件地开始执行。发生的第一件事是

我必须将这个for循环重写为do-while循环,但我不知道这是做什么的。请帮忙

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

让我们假设语法错误已解决,因此代码可以读取

for(;; done = (int) sum == 5)
{
    if (done) break;
    sum += 2.6;
}
现在这段代码的工作原理如下:for循环没有初始化表达式和测试表达式,因此它无条件地开始执行。发生的第一件事是选中“flag”
done
(我假设的未定义对象是
int
,该对象可能初始化为零,也可能未初始化为零)。如果为真(非零),代码将从
for
循环中断。如果不是,则将2.6(一个
double
)添加到
sum
(一个未定义的对象,我假设它是一个
double
,可能初始化为一个合理的值,也可能没有初始化为一个数字)。当执行到达右大括号时,执行
for
循环中的迭代语句,该语句将
sum
与5进行比较(将
sum
转换为整数值后),并将比较结果(即1表示真,0表示假)分配给
done

将其转换为
while
循环应该相当简单。只需按顺序执行这些步骤。请注意,由于要执行的第一段代码是检查
if(done)
,因此与
do while
循环相比,该代码更自然地适用于简单的
while
循环


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

我认为这在语法上是不正确的。在更轻的节点上:因为这不会编译,所以可以编写任何您想要的内容,不会产生任何影响。欢迎使用stackoverflow。请阅读以下内容:@Raffael如果您对答案感到满意,请将Tim的答案作为解决方案。这样问题就可以结束了。@Tim你说的总和是双倍的是对的。Sum和done分别定义为0.0和0。次要更正:
(int)Sum==5
解析为
((int)Sum)==5
,而不是
(int)(Sum==5)