首页 > 解决方案 > if 条件中 '%' 标记之前的预期表达式

问题描述

我对只学习 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);
    }

}

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

标签: cexpressiontoken

解决方案


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

if ((c1 < c2) %% (c1 < c3)) { // SOMWHERE HERE IS MISTAKE

具体来说,%%不是算子。

C中的逻辑运算符

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

逻辑运算符:&&

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

如果两个条件都满足true,则返回true。否则,它返回false

逻辑运算符:||

//   (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

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

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

推荐阅读