2014-10-04 89 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或更高版本。