2

当我编译这段代码时,我得到一个错误“在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;
}
4

3 回答 3

2

main将所有变量声明在紧随其后的顶部{,即val在第一个之前声明puts。这是因为您的编译器使用了禁止混合声明和代码的 C89。从 C99 开始,它们可以(几乎)在任何地方声明。

于 2014-10-04T04:54:22.437 回答
2

正如其他答案中提到的,C89 不支持在块的开头声明变量。如果您使用的是 clang 或 gcc,您可能需要将“-std=gnu99”添加到您的 CFLAGS。如果使用其他编译器或 IDE,请查找语言并将其更改为 C99 或更高版本。

于 2014-10-04T04:59:35.583 回答
1

似乎编译器要求变量的所有定义都在块的开头。试着写

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

还要考虑到数组 card_name 未初始化。

于 2014-10-04T04:52:54.533 回答