繁体   English   中英

关于C中程序错误的困惑

[英]Confusion about error of program in C

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM