2014-10-04 7 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 ** как 'синтаксическая ошибка: отсутствует ';' прежде чем «тип» будет действительно полезен для нас. –

ответ

2

объявить все переменные в верхней части main только после {, то есть, объявить val перед первым puts. Это связано с тем, что ваш компилятор использует C89, который запрещает смешанные декларации и код. Начиная с C99 они могут быть объявлены (почти) в любом месте.

1

Похоже, что для компилятора требуется, чтобы все определения варознов находились в начале блока. Попробуйте написать

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

также принимать во внимание, что card_name массив не инициализирован.

2

Как упоминалось в других ответах, C89 не поддерживает объявление переменных, отличных от начала блока. Если вы используете clang или gcc, вы можете добавить '-std = gnu99' в свои CFLAGS. Если вы используете другой компилятор или IDE, найдите язык и измените его на C99 или выше.