使用 && 运算符和 2 个变量在 if 语句中正确使用语法

Correct use of Syntax in if statement using && Operator and 2 variables

本文关键字:语法 语句 运算符 使用 变量 if      更新时间:2023-10-16

我有一个关于语法正确使用的快速问题,基本上我试图将这两个if语句总结为一个if语句。

if (sc.LastCallToFunction) {
    if (p_LowRectanglesList != NULL) {
        free(p_LowRectanglesList);
        sc.PersistVars->i1 = 0;
    }
    if (p_HighRectanglesList != NULL) {
        free(p_HighRectanglesList);
        sc.PersistVars->i2 = 0;
    }
    return;

将其改写为:在语法上正确吗

if (sc.LastCallToFunction) {
    if (p_LowRectanglesList || p_HighrectangleList != NULL) {
        free(p_LowRectanglesList && p_HighRectanglesList);
        sc.PersistVars->i1 && sc.PersistVars->i2 = 0;
    }
    return;

或者编译器不会接受这个/我的逻辑有问题吗?

你不能用的方法

if (p_LowRectanglesList || p_HighrectangleList != NULL)

这在逻辑上对第一个指针进行"或"运算(将其视为真或假),并将seond指针与NULL 进行比较

free(p_LowRectanglesList && p_HighRectanglesList);

这在逻辑上&s将指针放在一起,然后尝试释放该操作的结果。即,您正试图释放"真"或"假"

sc.PersistVars->i1 && sc.PersistVars->i2 = 0;

这在逻辑上把这两件事结合在一起,结果是真或假,然后试图给它赋值0……根本没有任何意义。

此外,在您的原始代码中。。。。在空闲之后,您应该将p_LowRectanglesList=NULL;