繁体   English   中英

^运算符对BOOL做了什么?

[英]What does the ^ operator do to a BOOL?

这句话是什么意思?

isChecked = isChecked ^ 1;

isChecked是一个BOOL

“^”是异或运算,因此0翻转为1,1翻转为零。 结果应与isChecked = !isChecked相同。

它将XOR与1检查,所以我认为是真的^ 1 = 0(假)和假^ 1 = 1(真)

每个人都说这是对布尔的反感 - 这是真的 - 但这里的目的是切换布尔。

像这样进行按位切换的优点是速度和在极端细节上调整位的能力。

更多按位运算符

它只翻转BOOL的最后一点。 不是逻辑否定的可靠方法。 如果某人足够疯狂将BOOL变量设置为某个数字,例如5.然后执行^ 1只会将值的最后一位翻转为4,仍然会将其评估为YES

如果你想在逻辑上否定,请使用! 而不是运营商

^独家或运营商。

在您的例子是用于创建切换- isChecked将设置只有isChecked以前未设置。

这是按位XOR运算符,将0更改为1,将1更改为0。 看到所有的opertors 在这里

“^”称为异或或异或运算。 在这种情况下,它会将布尔值从true更改为false,反之亦然。

要了解更多信息,请查看此链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM