Путаница с ошибкой программы на С

Когда я компилирую этот код, я получаю сообщение об ошибке "перед int val нет"; как я могу избавиться от этой ошибки?

#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;
}

3 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам