【问题标题】:expected identifier in c languagec语言中的预期标识符
【发布时间】:2021-07-30 14:45:32
【问题描述】:

我在这里尝试编写程序,但使用 NOT(!) 创建错误:

int find_min(void)
{
    mini=voter_count;
    for(int i=0;  i>candidate_count; i++)
    {
        if (candidates[i].votes<mini) && !(candidates[i].eliminated){
            mini = candidates[i].votes;
        }
    }
    return mini;
}

程序编译时出错:

runoff.c:187:42: error: expected identifier
        if (candidates[i].votes<mini) && !(candidates[i].eliminated)){
                                         ^**

但我匹配了花括号,当我删除 ! 符号时,它将被编译而没有错误。

【问题讨论】:

  • 试试(candidates[i].votes&lt;mini &amp;&amp; !candidates[i].eliminated) 删除了)(
  • Omkar,查看&gt;i&gt;candidate_count 中的使用。确定要“大于”?
  • 在 C 中,if 语法要求条件被完全括起来。
  • 谢谢你成功了,我应该使用

标签: c compiler-errors cs50


【解决方案1】:

在 C 中,if 语句的表达式需要在括号中:

if (expression) 
{
    /* do work */
}

但是,你写的是:

if (expr1) && !(expr2)
{
    /* do work */
}

通过将整个表达式放在括号中来解决此问题:

if ( (expr1) && !(expr2) )     /* <== Note the outer-parens */
{
    /* do work */
}

我知道其他一些语言,尤其是 Python,确实要求表达式在括号内。但在 C 中,它非常重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    相关资源
    最近更新 更多