【问题标题】:Confusion about error of program in C关于 C 中程序错误的困惑
【发布时间】:2014-11-29 03:36:09
【问题描述】:

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

【问题讨论】:

  • 下次以后,发布像syntax error : missing ';' before 'type'这样的确切错误消息对我们真的很有帮助。

标签: c puts


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-25
        • 1970-01-01
        • 2013-12-30
        • 2013-07-23
        • 1970-01-01
        • 2012-03-26
        • 2018-07-24
        相关资源
        最近更新 更多