【问题标题】:Expected expression before '%' token in if conditionif 条件中 '%' 标记之前的预期表达式
【发布时间】:2020-09-27 18:07:41
【问题描述】:

我对只学习 C 语言很感兴趣,但我犯了一个错误,这让我陷入了一个笑点:-)。

int lowest() {
    int c1,c2,c3,min;

    printf("Type three integer numbers: ");
    scanf("%d %d %d",&c1, &c2, &c3);

    if ((c1 < c2) %% (c1 < c3)) { // SOMWHERE HERE IS MISTAKE
        min = c1;
        printf("Lowest from %d, %d, %d is %d", c1,c2,c3, min);
    } else if ((c2 < c1) %% (c2 < c3)) {
        min = c2;
        printf("Lowest from %d, %d, %d is %d", c1,c2,c3, min);
    } else {
        min = c3;
        printf("Lowest from %d, %d, %d is %d", c1,c2,c3, min);
    }

}

函数在另一个主函数中被调用。

【问题讨论】:

  • 您的确切错误信息是什么?实际上,'%%' 看起来是错误的;这可能应该是 '&&' (and) 或 '||' (或)。
  • C 没有%% 运算符。你需要阅读逻辑运算符docs.microsoft.com/en-us/cpp/c-language/…
  • % 在大多数键盘上紧挨着&amp;,所以我怀疑这是一个简单的错字(你的意思是&amp;&amp; 而不是%%)。如果这不是一个错字,那么你真的需要考虑一下你在做什么。
  • @Someprogrammerdude 它不是下一个。有一个$ \between,他重复了两次。很难相信错字。
  • @P__J__ 在我的键盘(德语布局)上,键是$%&amp;,即%&amp; 旁边。不确定 Slowakia 的布局。

标签: c expression token


【解决方案1】:

要么你的语法错误,要么是一个无辜的错字。无论哪种方式,错误来自

if ((c1 &lt; c2) %% (c1 &lt; c3)) { // SOMWHERE HERE IS MISTAKE

具体来说,%% 不是运算符。

Logical operators in C

三个逻辑运算符的简要说明:

逻辑 AND 运算符:&amp;&amp;

//   (7 > 0 && 6 > 0) == true
//   (7 > 0 && 6 < 0) == false

如果两个条件都是true,则返回true。否则返回false

逻辑OR运算符:||

//   (7 > 0 || 6 > 0) == true
//   (7 > 0 || 6 < 0) == true
//   (7 < 0 || 6 < 0) == false

如果任一条件为true,则返回true。否则,它返回 false。

逻辑运算符NOT!

! 运算符只是反转表达式。例如,

// !true == false
// !(any true statement) == false
// !(any false statement) == true

// (!(6 < 0)) == true
// (!(6 > 0)) == false

我相信您打算使用逻辑 &amp;&amp; 运算符。如果是这样,请更正它,并且不会再有任何错误。所以正确的表达式应该是

if ((c1 < c2) && (c1 < c3)) {
   //Do something...
}

【讨论】:

    【解决方案2】:

    您可能输入了 %% 错误。 C 语言中有 3 个运算符,它们是:

    1. &amp;&amp;(AND 运算符)
    2. ||(或运算符)
    3. !(非运算符)

    有时我输入 %% 而不是 &amp;&amp; 是错误的。请注意这些小的语法错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多