如何只用c语言实现布尔表达式求值

rt,如何用c语言实现布尔表达式的求值(不用c++),假设在布尔表达式中,操作数只有 T 和 F,并且 T 表示真、F 表示假,运算符&、
|、!分别表示与、或、非,并且优先级是! > & > |,表达式当然还有括号。假设表达式
不存在空格,并且没有语法错误,对于给定的布尔表达式,请给出布尔表达式的最终结


#include <stdio.h>

// 函数声明
int evaluateExpression(const char* expression);

// 函数实现
int evaluateNot(const char** expression) {
    (*expression)++;  // 跳过'!'
    int operand = evaluateExpression(*expression);
    return !operand;
}

int evaluateAnd(const char** expression) {
    (*expression)++;  // 跳过'&'
    int operand1 = evaluateExpression(*expression);
    (*expression)++;  // 跳过'&'
    int operand2 = evaluateExpression(*expression);
    return operand1 && operand2;
}

int evaluateOr(const char** expression) {
    (*expression)++;  // 跳过'|'
    int operand1 = evaluateExpression(*expression);
    (*expression)++;  // 跳过'|'
    int operand2 = evaluateExpression(*expression);
    return operand1 || operand2;
}

int evaluateExpression(const char* expression) {
    if (*expression == 'T')
        return 1;
    if (*expression == 'F')
        return 0;
    if (*expression == '!') {
        return evaluateNot(&expression);
    }
    if (*expression == '&') {
        return evaluateAnd(&expression);
    }
    if (*expression == '|') {
        return evaluateOr(&expression);
    }
    return 0;  // 如果表达式不符合规则,返回0(假设错误处理为返回假)
}

int main() {
    const char* expression = "!(T&F)|T";
    int result = evaluateExpression(expression);
    printf("Result: %d\n", result);
    return 0;
}

在 evaluateExpression 函数中,我们通过检查当前字符来确定表达式的类型,并相应地调用相应的辅助函数。最终,evaluateExpression 函数返回整个布尔表达式的结果。

在 main 函数中,我们使用一个示例布尔表达式 !(T&F)|T 来测试 evaluateExpression 函数,并打印结果。