2015-09-14 41 views
-6
for (int i = number_1; i > 0; i--) 
{ 
    int j = 2; 
    printf("%*s", i - 1,""); 
    for (j; j > 0; j--) 
    { 
     printf("#"); 
    } 
    printf("\n"); 
    j = j + 1; 
} 

在這裏,我試圖運行我的二級for循環通過採取在前一個循環中聲明的變量。它迭代並打印符號「#」,然後在外循環結束之前再次遞增1。在for循環中使用全局變量

我得到這個錯誤

表達結果未使用

這是怎麼回事?我當然可以用不同的方式完成任務。但我想知道爲什麼代碼在這種情況下不起作用。

+0

問題尋求幫助調試(「爲什麼不是這個代碼的工作?」)必須包括所期望的行爲,具體問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建最小,完整和可驗證示例。 – Olaf

+3

沒有全局變量。 – Olaf

+0

這是錯誤還是警告? –

回答

3

這樣的說法:

j = j + 1; 

給「J」的值,而是通過循環的下一次迭代達到這個說法:

int j = 2; 

所以第一個語句的結果不被使用。

但是,由於它是'初始化',所以這可能並不重要。

那麼這樣的說法:

for (j; j > 0; j--) 

有語法錯誤。其中第一個參數用於初始化一個值(在本例中爲'j'),但不執行初始化。

推薦:

for (; j > 0; j--) 

因此省略所述第一參數

0

誤差通常只有一個警告。你有表達j;這裏:

for (j; j > 0; j--) 

但你沒有的j值分配到任何東西。

將其更改爲

for (; j > 0; j--) 

再有就是與j另一個問題,如@ user3629249指出。
移動的j申報外循環:

int j = 2; 
for (int i = number_1; i > 0; i--) 
    { 
     printf("%*s", i - 1,""); 
     for (; j > 0; j--) 
     { 
      printf("#"); 
     } 
     printf("\n"); 
     j = j + 1; 
    } 
1

變化

for (int i = number_1, j = 2; i > 0; i--, ++j)//j move to this. 
{ 
    printf("%*s", i - 1,""); 
    for (int k = j; k > 0; k--) 
    { 
     printf("#"); 
    } 
    printf("\n"); 
}