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

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

 int my_negate(int x) { return x == 0 ? 1 : 0; } 

!e可以换成((e)?0:1)

记住爆炸操作员’!’ 用英语说的感叹号,作为一种否定的手段,内置于编程语言中。

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

 (某些条件)? 真假;

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

 (某些条件)?  false:是的;

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

 if(strcmp(foo,“foo”)){

 }

什么时候应该是:

 if(!strcmp(foo,“foo”)){
 }

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

希望这可以帮助。

C认为所有非零值“真”和零“假”。 通过检查零来完成逻辑否定。 如果输入正好为零,则输出非零值; 否则,输出零。 在代码中,您可以将其写为(input == 0) ? 1 : 0 (input == 0) ? 1 : 0 (或者您可以将其转换为if语句)。

当你问如何“制作你自己的!方法”时,你的意思是你想要编写一个否定逻辑值的函数,或者你想要定义感叹号操作符的作用吗? 如果是前者,那么我上面发表的陈述就足够了。 如果是后者,那么我担心这是C中无法完成的事情.C ++支持运算符重载,如果这样做是严格的必要,那么我建议那里看看。

如果要重载运算符,正确的原型是:

 bool operator!(); 

我不是超载运营商的忠实粉丝,但有些人喜欢他们的语法糖。 编辑:这只是C ++! 把它放在你class级的定义中。