2

この声明はどういう意味ですか?

isChecked = isChecked ^ 1;

isCheckedですBOOL

4

7 に答える 7

5

「^」は排他的 OR 演算であるため、0 は 1 に反転し、1 は 0 に反転します。結果は と同じになりisChecked = !isCheckedます。

于 2012-05-29T05:56:08.013 に答える
2

の最後のビットのみを反転しBOOLます。論理的に否定する信頼できる方法ではありません。誰かが aBOOL変数を何らかの数値、たとえば 5 に設定するほど狂っている場合、それを行う^ 1と、値の最後のビットが 4 に反転するだけで、これはまだ に評価されYESます。

論理的に否定したい場合は、!代わりに演算子を使用してください。

于 2012-05-29T11:05:04.370 に答える
2

isChecked を 1 で XOR するので、true ^ 1 = 0(false) および false ^1 = 1(true) と仮定します。

于 2012-05-29T05:56:31.113 に答える
2

誰もがブール値の XOR を行っていると言っていますが、これは本当です。しかし、ここでの目的は、ブール値をトグルすることです。

このようにビット単位のトグルを行う利点は、速度とビットを非常に詳細に操作できることです。

より多くのビット演算子

于 2012-05-29T05:58:42.633 に答える
1

^排他的 or演算子です。

あなたの例では、トグルを作成するために使用されています -以前に設定されていなかったisChecked場合にのみ設定されisCheckedます。

于 2012-05-29T05:56:23.010 に答える
1

これはビット単位の XOR 演算子であり、0 を 1 に、1 を 0 に変更します。ここですべての演算子を参照してください。

于 2012-05-29T05:56:50.843 に答える