2014-10-04 48 views
2

當我編譯這段代碼時,我在int val前面得到一個錯誤「,不存在」; 我該如何擺脫這個錯誤?關於程序錯誤的疑惑C

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    char card_name[3]; 
    puts("카드 이름을 입력하세요: "); 
    int val = 0; 
    if(card_name[0]=='K') { 
     val = 10; 
    } 
    else if (card_name[0] == 'Q') { 
     val = 10; 
    } 
    else if (card_name[0] == 'J') { 
     val = 10; 
    } 
    else if (card_name[0] == 'A') { 
     val = 11; 
    } 
    else 
    { 
     val = atoi(card_name); 
    } 

    printf("카드값은 다음과 같습니다 : %i/n", val); 
    return 0; 
} 
+0

下次開始,發佈** exact **錯誤消息,如'syntax error:missing';' 'type'之前對我們真的很有幫助。 – 2014-10-04 05:53:13

回答

2

{之後聲明main之上的所有變量,即在第一個puts之前聲明val。這是因爲你的編譯器使用禁止混合聲明和代碼的C89。從C99開始,它們可以在任何地方宣佈(幾乎)。

1

看來,編譯器要求varaibles的所有定義將是塊beginninh。 試着寫

char card_name[3]; 
int val = 0; 
puts("카드 이름을 입력하세요: "); 

而且考慮到陣列CARD_NAME未初始化。

2

正如其他答案中所述,C89不支持聲明塊以外的其他變量。如果您使用的是clang或gcc,則可能需要將'-std = gnu99'添加到CFLAGS中。如果使用其他編譯器或IDE,請查找該語言並將其更改爲C99或更高版本。