逻辑否定如何在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级的定义中。