2

这个声明是什么意思?

isChecked = isChecked ^ 1;

isChecked是一个BOOL

4

7 回答 7

5

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

于 2012-05-29T05:56:08.013 回答
2

它将 XOR isChecked 与 1 所以我认为 true ^ 1 = 0(false) 和 false ^1 = 1(true)

于 2012-05-29T05:56:31.113 回答
2

每个人都在说它对布尔值进行异或运算——这是真的——但这里的目的是切换布尔值。

像这样进行按位切换的优点是速度和能够非常详细地处理位。

更多位运算符

于 2012-05-29T05:58:42.633 回答
2

它只翻转BOOL. 不是逻辑否定的可靠方法。如果有人疯狂到将 aBOOL变量设置为某个数字,例如 5。那么做^ 1只会将值的最后一位翻转为 4,它仍然被评估为YES

如果要逻辑否定,请改用!运算符。

于 2012-05-29T11:05:04.370 回答
1

^异或运算符。

在您的示例中,它用于创建切换 -仅在之前未设置isChecked时才会设置。isChecked

于 2012-05-29T05:56:23.010 回答
1

这是按位异或运算符,将 0 更改为 1,将 1 更改为 0。在这里查看所有操作员。

于 2012-05-29T05:56:50.843 回答
1

“^”称为异或或异或运算。在这种情况下,它将布尔值从真变为假,反之亦然。

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

于 2012-05-29T05:59:16.273 回答