检查C中包含未定义变量的关系表达式的有效性

检查C中包含未定义变量的关系表达式的有效性,c,C,在C语言中是否有一个函数可以在不知道所涉及变量的情况下计算关系表达式的有效性 示例: int x; (x < 10 && x > 1) 应该返回false据我所知,c没有内置的“表达式有效性函数”。你应该自己编写代码 伪代码: bool Expr_valid(char* input) { array[]=parse(input); //parse input as you like into array evaluate(array);

在C语言中是否有一个函数可以在不知道所涉及变量的情况下计算关系表达式的有效性

示例:

int x;
(x < 10 && x > 1) 

应该返回
false

据我所知,c没有内置的“表达式有效性函数”。你应该自己编写代码

伪代码:

bool Expr_valid(char* input)
{
    array[]=parse(input);   //parse input as you like into array
    evaluate(array);        //evaluate the parts of input according to your rules
    return evaluation result;
}

据我所知,c没有内置的“表达式有效性函数”。你应该自己编写代码

伪代码:

bool Expr_valid(char* input)
{
    array[]=parse(input);   //parse input as you like into array
    evaluate(array);        //evaluate the parts of input according to your rules
    return evaluation result;
}

据我所知,c没有内置的“表达式有效性函数”。你应该自己编写代码

伪代码:

bool Expr_valid(char* input)
{
    array[]=parse(input);   //parse input as you like into array
    evaluate(array);        //evaluate the parts of input according to your rules
    return evaluation result;
}

据我所知,c没有内置的“表达式有效性函数”。你应该自己编写代码

伪代码:

bool Expr_valid(char* input)
{
    array[]=parse(input);   //parse input as you like into array
    evaluate(array);        //evaluate the parts of input according to your rules
    return evaluation result;
}
不,没有

将未初始化变量用于除写入之外的任何操作都是未定义的行为。

不,没有

将未初始化变量用于除写入之外的任何操作都是未定义的行为。

不,没有

将未初始化变量用于除写入之外的任何操作都是未定义的行为。

不,没有


将未初始化的变量用于除写入之外的任何操作都是未定义的行为。

没有注意到这样的函数可以在未定义变量的情况下找到关系表达式的有效性


需要使用关系运算符来查找
两个实体之间的关系,这两个实体只能是定义的常量或变量。否则可能是UB使用了未定义的变量。

没有注意到这样的函数可以在未定义变量的情况下找到关系表达式的有效性


需要使用关系运算符来查找
两个实体之间的关系,这两个实体只能是定义的常量或变量。否则可能是UB使用了未定义的变量。

没有注意到这样的函数可以在未定义变量的情况下找到关系表达式的有效性


需要使用关系运算符来查找
两个实体之间的关系,这两个实体只能是定义的常量或变量。否则可能是UB使用了未定义的变量。

没有注意到这样的函数可以在未定义变量的情况下找到关系表达式的有效性

需要使用关系运算符来查找
两个实体之间的关系,这两个实体只能是定义的常量或变量。否则它可能是UB使用未定义的变量

C语言中是否有一个函数可以在不知道所涉及变量的情况下计算关系表达式的有效性

没有

您应该做的是在编译时启用尽可能多的警告。好的编译器会给出类似“条件始终为真/假”的警告。如果编译器仍然无法捕捉到它,请考虑使用一个外部静态分析工具,它很可能会发现这样的错误。 C语言中是否有一个函数可以在不知道所涉及变量的情况下计算关系表达式的有效性

没有

您应该做的是在编译时启用尽可能多的警告。好的编译器会给出类似“条件始终为真/假”的警告。如果编译器仍然无法捕捉到它,请考虑使用一个外部静态分析工具,它很可能会发现这样的错误。 C语言中是否有一个函数可以在不知道所涉及变量的情况下计算关系表达式的有效性

没有

您应该做的是在编译时启用尽可能多的警告。好的编译器会给出类似“条件始终为真/假”的警告。如果编译器仍然无法捕捉到它,请考虑使用一个外部静态分析工具,它很可能会发现这样的错误。 C语言中是否有一个函数可以在不知道所涉及变量的情况下计算关系表达式的有效性

没有

您应该做的是在编译时启用尽可能多的警告。好的编译器会给出类似“条件始终为真/假”的警告。如果编译器仍然无法捕捉到它,请考虑使用一个外部静态分析工具,它很可能会发现这样的错误。
intx;
如果(x>10&&x<0){}
输出:

david@debian:~$ cppcheck --enable=all demo.c
Checking demo.c...
[demo.c:6]: (style) Variable 'x' is not assigned a value
[demo.c:8]: (warning) Logical conjunction always evaluates to false: x < 0 && x > 10.
[demo.c:8]: (error) Uninitialized variable: x
Checking usage of global functions..
david@debian:~$cppcheck--enable=all demo.c
正在检查demo.c。。。
[demo.c:6]:(样式)未为变量“x”赋值
[demo.c:8]:(警告)逻辑连词的计算结果始终为false:x<0&&x>10。
[demo.c:8]:(错误)未初始化变量:x
正在检查全局函数的使用情况。。
您可以使用

intx;
如果(x>10&&x<0){}
输出:

david@debian:~$ cppcheck --enable=all demo.c
Checking demo.c...
[demo.c:6]: (style) Variable 'x' is not assigned a value
[demo.c:8]: (warning) Logical conjunction always evaluates to false: x < 0 && x > 10.
[demo.c:8]: (error) Uninitialized variable: x
Checking usage of global functions..
david@debian:~$cppcheck--enable=all demo.c
正在检查demo.c。。。
[demo.c:6]:(样式)未为变量“x”赋值
[demo.c:8]:(警告)逻辑连词的计算结果始终为false:x<0&&x>10。
[demo.c:8]:(错误)未初始化变量:x
正在检查全局函数的使用情况。。
您可以使用

intx;
如果(x>10&&x<0){}
输出:

david@debian:~$ cppcheck --enable=all demo.c
Checking demo.c...
[demo.c:6]: (style) Variable 'x' is not assigned a value
[demo.c:8]: (warning) Logical conjunction always evaluates to false: x < 0 && x > 10.
[demo.c:8]: (error) Uninitialized variable: x
Checking usage of global functions..
david@debian:~$cppcheck--enable=all demo.c
正在检查demo.c。。。
[demo.c:6]:(样式)未为变量“x”赋值
[demo.c:8]:(警告)逻辑连词的计算结果始终为false:x<0&&x>10。
[demo.c:8]:(错误)未初始化变量:x
正在检查全局函数的使用情况。。
您可以使用

intx;
如果(x>10&&x<0){}
输出:

david@debian:~$ cppcheck --enable=all demo.c
Checking demo.c...
[demo.c:6]: (style) Variable 'x' is not assigned a value
[demo.c:8]: (warning) Logical conjunction always evaluates to false: x < 0 && x > 10.
[demo.c:8]: (error) Uninitialized variable: x
Checking usage of global functions..
david@debian:~$cppcheck--enable=all demo.c
正在检查demo.c。。。
[demo.c:6]:(样式)未为变量“x”赋值
[demo.c:8]:(警告)逻辑连词的计算结果始终为false:x<0&&x>10。
[demo.c:8]:(错误)未初始化变量:x
正在检查全局函数的使用情况。。

表达式
(x>10&&x<1)
始终为false。为什么不在if子句中使用它呢?也许静态代码分析器可以发现这样的语句。表达式
(x>10&&x<1)
总是错误的。为什么不在if子句中使用它呢?可能是一个静态代码分析器c