C 这是什么意思!接线员在这种情况下该怎么办?

C 这是什么意思!接线员在这种情况下该怎么办?,c,C,我在一本教科书上学习C语言,我偶然发现了函数的代码,下面的部分对它的功能几乎没有解释。它看起来像这样: int func(char *a, char *b) { if(!a || !b) return 0; return 1; } 我的理解是检查a和b是否为空?这是正确的吗?欢迎对此初学者提供任何帮助:!是逻辑not运算符 如果条件!a | | |!如果a或b为零,即空指针,则b为真。在这种情况下,func返回0,否则返回1: a b

我在一本教科书上学习C语言,我偶然发现了函数的代码,下面的部分对它的功能几乎没有解释。它看起来像这样:

int func(char *a, char *b) {
    if(!a || !b)
        return 0;
    return 1;
}
我的理解是检查a和b是否为空?这是正确的吗?欢迎对此初学者提供任何帮助:

!是逻辑not运算符

如果条件!a | | |!如果a或b为零,即空指针,则b为真。在这种情况下,func返回0,否则返回1:

a        b        condition  func
null     null     true       0
null     non-null true       0
non-null null     true       0
non-null non-null false      1
如果否定条件并交换返回值,则更容易理解:

int func(char *a, char *b) {
    if(a && b)
        return 1;
    return 0;
}
由于在C中,关系运算符将其结果表示为int,即0表示false,1表示true,因此可以进一步简化为:

int func(char *a, char *b) {
    return a && b;
}
这个!在大多数编程语言中,运算符将逻辑或not运算符反转。i、 e.从正确到错误,反之亦然

例如:

a=True;
if(!a) {
    return 1;
}else {
    return 2;
}

输出为2。因此,在本例中,如果不是A或B,则返回0。

不完全正确。当a为null或b为null时,逻辑NOT运算符将导致if条件求值为true,返回值为零,否则代码返回1,表示a或b不为null。

我没有得到下一票,对于初学者来说,这个问题是绝对正确的。如果其中任何一个为null。但最好是显式的:ifa==NULL | | b==NULL。如果两个指针都有效,则函数返回1。@CherryDT NULL的计算结果为地址零,而不是数字零。@WeatherVane无需担心!:这是一个非常清楚的答案,代码简化非常好!谢谢大家!@一个不客气的名字!: