错误:数字常量之前应为“)”

Posted

技术标签:

【中文标题】错误:数字常量之前应为“)”【英文标题】:error: expected ')' before numeric constant 【发布时间】:2013-09-07 00:36:07 【问题描述】:

错误:数字常量前应为')'

我的代码似乎是正确的,但编译器始终向我发送错误消息。尝试编辑和编译一个小时后,我仍然找不到错误。帮助? 这是我的代码:

void get_record()


    char record_num[LEN];
    int x, y;
    printf("Enter the record number of the Student Record to modify: ");
    fgets(record_num, LEN, stdin);
    
        x = atoi(record_num);
        if (x>STUDENTS||x<=0)
        
            printf("ERROR: Invalid Input. Input should be from 1-"STUDENTS".\n");
            printf("Enter the record number of the Student Record to modify: ");
            get_record();
        
    
    output();
    _z= x;
    i= (x-1);
    printf(LEV2"%3d     %25s    %9s         ", x, name[i], studno[i]);
        for (y=0; y<EXAMS; y++)
            
            printf("%5s   ", exam_z[y]);
            y++;
            

帮助?

【问题讨论】:

从编译器复制粘贴错误信息 【参考方案1】:

除非STUDENTS 是字符串文字(不是因为您将其与上面的int 进行比较),否则您应该使用格式说明符%d 将其包含在字符串中,如下所示:

printf("ERROR: Invalid Input. Input should be from 1-%d.\n", STUDENTS);

【讨论】:

【参考方案2】:

我认为你的错误陈述是错误的。 STUDENTS 应该是一个编译时间常数,因为您也在 if 条件下使用它。所以,试试 -

printf("ERROR: Invalid Input. Input should be from 1-%d.\n",STUDENTS);

【讨论】:

【参考方案3】:

在这一行:

printf("ERROR: Invalid Input. Input should be from 1-"STUDENTS".\n");

你用“”错了,如果你想把“放在字符串里你每次都做\”。

现在应该没问题了:

printf("ERROR: Invalid Input. Input should be from 1-\"STUDENTS\".\n");

或者如果你想打印出 STUDENTS 的实际值:

printf("ERROR: Invalid Input. Input should be from 1-%d.\n",STUDENTS);

【讨论】:

【参考方案4】:
printf("ERROR: Invalid Input. Input should be from 1-"STUDENTS".\n");

应该是

printf("ERROR: Invalid Input. Input should be from 1-"+STUDENTS+".\n");

相邻的字符串需要用+ 操作符连接。

编辑

对不起,我习惯了 Java/C++,这在 C 中不起作用。最好按预期使用 printf:

printf("ERROR: Invalid Input. Input should be from 1-%d.\n",STUDENTS);

见:printf documentation

【讨论】:

你确定吗?

以上是关于错误:数字常量之前应为“)”的主要内容,如果未能解决你的问题,请参考以下文章

错误:数字常量之前的预期';',','或')[关闭]

Visual Studio,错误:在数组声明中使用 #define 常量时,应为“]”

数字常量之前的预期不合格 id

数字常量之前的预期标识符

错误:我的代码中出现意外的符号/输入/字符串常量/数字常量/SPECIAL

如何找到 C++ 编译器认为定义为常量的内容?