假设我有两个不同的结构,Struct1和Struct2。它们都有不同的元素。
如果我这样比较它们会怎么样:

if((Struct1) && (Struct2))
{
    doSomething();
}

我刚找到一些符合这个逻辑的代码,想知道发生了什么。
谢谢!
编辑:Struct1和Struct2都是指向两个不同结构的指针,而不是指向结构本身。

最佳答案

要实现这一点,必须有指针,而不是结构也就是说,代码可能是:

void somefunc(struct structA *Struct1, struct structB *Struct2)
{
    if (Struct1 && Struct2)
    {
        doSomething(Struct1, Struct2);
    }
}

这将在使用指针之前检查它们都不是空的不能直接比较结构,因此如果代码是:
void somefunc(struct structA Struct1, struct structB Struct2)
{
    if (Struct1 && Struct2)
    {
        doSomething(Struct1, Struct2);
    }
}

你会有一个语义错误;你只是不能把整个结构和任何东西进行比较。
变量的大小写是一个惯例。

关于c - C语言中的逻辑运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14075137/

10-13 08:29