2017-05-27 124 views
-2

我有這個問題,我只能使用gcc -std = c99進行編譯,但是,我需要它使用c89編譯aka gcc -Wall。這是我使用'for'循環的代碼的一部分。請看看你能否幫助我提前謝謝你。錯誤:for'循環初始聲明只允許在c99模式

#include<stdio.h> 
int main() 
{ 
    int arr[100],i=0,ch; 
    int n = 1, sum = 0; 
    printf("Check out our selection! \n"); 
    printf("Airhead - 25 cents\n"); 
    printf("Fun Dip - 40 cents\n"); 
    printf("Gummi Bears - 20 cents\n"); 
    while (n != 0) 
    { 
     printf("Insert Coins: "); 
     scanf("%d",&n); 
     arr[i++] = n; 
    } 

    for(int j=0;j<i;j++) 
    { sum = sum + arr[j]; 
    } 
...... 
+3

在函數的開始處定義變量'j'以及其他變量? –

+1

「*我需要它編譯使用c89又名gcc -Wall *」< - 這些是不同的想法。你爲什麼需要這個? –

+2

在C99模式之外使用的循環初始聲明中可能有[如何修復] GCC錯誤?](https://stackoverflow.com/questions/24881/how-doi-i-fix-for-loop-initial-聲明已用-c99-mode-gcc-error) –

回答

2

這是錯誤的:

for (int j = 0; j < i; j++) { 
    sum = sum + arr[j]; 
} 

你必須在功能開始初始化j

int main() { 
    int j; 
    ... 
    for (j = 0; j < i; j++) { 
     sum = sum + arr[j]; 
    } 
}