C 弄清楚这个函数的作用是什么?
我必须将这个for循环重写为do-while循环,但我不知道这是做什么的。请帮忙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(;; 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)