Jua*_*blo 24 c operators logical-operators
我读这段代码,并有这条线
switch (!!up + !!left) {
Run Code Online (Sandbox Code Playgroud)
什么是!!运营商?两个逻辑不?
Arm*_*yan 38
是的,这是两个不值得的.
!!a是1如果a是非零和0,如果a是0
您可以将其!!视为夹紧{0,1}.我个人觉得这种用法很难看起来很花哨.
你可以想象它是这样的:
!(!(a))
Run Code Online (Sandbox Code Playgroud)
如果你一步一步地做,这是有道理的
result = !42; //Result = 0
result = !(!42) //Result = 1 because !0 = 1
Run Code Online (Sandbox Code Playgroud)
这将返回1任何数字(-42,4.2f等),但只有0,这将发生
result = !0; //Result = 1
result = !(!0) //result = 0
Run Code Online (Sandbox Code Playgroud)