2017-04-16 168 views
-2

之前,我不知道如何在一个标题说明这一点,但这里有一个例子:打印循环终值循环打印其内容

i = 0 

print i 

for (i++) print stuff for every iteration 

输出应该是:

的最终值i
一切都在cicle印刷

i的最终值只有在经过循环后才能知道,但我希望在循环打印其消息之前显示它。这可能吗?根据要求

代码:

void function(type name[]){ 
    printf("total (i)"); 
    for (int i = 0; i < MAX; i++){ 
    if (name[i].id) printf("%d:%s\n", name[i].id, name[i].string); 
    } 
} 
+1

可能[xy](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)问题?这是不可能的,但有解决方法,您可以将循环的输出存储在某种列表中,然后再打印出来。但为什么只有在循环之后才知道'i'的值? – George

+1

这个for(int i = 0; i alk

回答

0

做的最简单的方法:在任何你想要并将结果保存在一个数组 迭代。然后打印最终的值,然后遍历结果数组并打印出来。

另一种解决方案(糟糕而昂贵的解决方案,不要使用它): 迭代你想要的任何东西并打印最终值,重复迭代并打印每个值。

0

您可以通过使用两个循环再次进行迭代来完成。如果妳不喜欢,你还可以使用迭代函数,如:

void print_my_data(uint16_t i) 
{ 
    Do your Process; 

    if(last_iteration)print i; 
    else print_my_data(i+1); 

    print stuff for every iteration 
} 

所以这不会打印东西,直到数据被完全执行并打印我。

但这里的问题是,数据会以相反的顺序打印

希望这有助于

0

我的最后的值只能知道它会通过在循环后

这很大程度上取决于环路条件。当您的循环条件为i < MAX时,您知道MAX大于零,i得到的值增加了1,并且循环中没有break语句,您可以通过遵循循环的逻辑推导出最终值i:循环是当i变成等于MAX时将停止。

这被称为循环的postcondition