2017-04-16 202 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