逻辑否定如何在C中起作用?

Ben*_*sen 11 c

我一直在用!(逻辑否定)在C和其他语言中,我很好奇有谁知道如何制作自己的!功能?或者有创造性的方式制作一个?

Han*_*s W 20

int my_negate(int x)
{
    return x == 0 ? 1 : 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 空指针总是转换为整数值零(即使空指针没有像那样表示).(Harbison&Steele,§6.2.3) (3认同)

Pas*_*uoq 7

!e 可以替换为 ((e)?0:1)


t0m*_*13b 5

记住爆炸操作员'!' 用英语说的感叹号,作为一种否定的手段,被编入语言中.

考虑这个三元运算符示例:

(some condition) ? true : false;

现在,如果这被否定,那么三元运算符就是这样

(some condition) ? false : true;

可以让一些程序员有点合适的公共区域是strcmp函数,它返回0表示字符串是相同的,1表示两个字符串不相同:

if (strcmp(foo, "foo")){

}

什么时候真的应该是:

if (!strcmp(foo, "foo")){
}

一般来说,当你否定时,它就像三元运算符例子中所示的相反......

希望这可以帮助.