0

这是函数(我希望逻辑相当明显)。

设 x 为“<”或“>”运算符之一,a 和 b 为术语。

int rationalCheck(x, a, b){

    if ( x == '<' && a < b && b < a ){
        printf( "a is less than b\n" );
    }

    if ( x != '>' && a > b && b > a ){
        printf( " a is greater than b\n" );
    }

    return 0;
}

该函数的输入将是

(4 < 4) > (3 > 3)

这将评估为

(4 < 4) > (3 > 3) is false

或者输入到函数中的是

(4 < 6) > (2 > 1)

这将评估为

(4 < 6) > (2 > 1) is true
4

2 回答 2

1

您不能将运算符/操作传递给 C 中的函数。我建议考虑使用 Haskell。

或者,您可以将操作传递给,因此可以将其实现为宏,因此宏的定义assert类似于:

#include <stdio.h>

#define assert(cond) if (!(cond) && printf("Assertion failed: " # cond " at " __FILE__ ":%d\n", __LINE__) != 0) abort()

int main(void) {
    assert(1 > 1);
}

也许你想要类似的东西:

#include <stdio.h>

#define rational_check(cond) printf(# cond " is %s\n", (cond) == 0 ? "false" : "true")

int main(void) {
    rational_check((4 > 4) > (3 > 3));
    rational_check((4 < 6) > (2 > 1)); // (4 < 6) > (2 > 1) is 1 > 1, by the way... false
}

但是,我不能确定这是否适合您的需求。函数指针不能从rational_check 派生,也不能用于表示运行时形成的表达式的字符串;您需要为任何需要这些的用例编写翻译器......否则,这应该是合适的。

于 2013-03-17T02:37:37.500 回答
-1

这对我有用。我想多了。

int rationalCheck(x, a, b){


if ( x == '<')
{
    if (a >= b)
    {
        return 99;
    }

    if (b <= a) {
        return 99;
    }
}

if (x == '>')
{
    if (a <= b)
    {
        return 99;

    }
    if (b >= a)
    {
        return 99;
    }

}


return 1;
}

感谢大家的意见。

于 2013-03-17T02:46:15.130 回答