ページ 11

1、0の反転

Posted: 2010年8月15日(日) 13:41
by みすた
int a;
(中略)
if(a == 0) a = 1;
else if(a == 1) a = 0;

このように、もしa=0なら1に、a=1なら0にしたい時の処理を何度も行ないたいのですが、
もう少しシンプルな表記方法はあるでしょうか。(1回の命令で済ませられるようなもの)
ビット反転だと、全部のビットが入れ替わってしまうのでダメですし、
何かいいのがありましたら教えて頂ければと思います。 画像

Re:1、0の反転

Posted: 2010年8月15日(日) 13:43
by softya
XORは指定したビットしか反転しませんよ。
a = a ^ 1;

Re:1、0の反転

Posted: 2010年8月15日(日) 13:44
by みすた
そうだったんですか!知りませんでした。
ありがとうございました。 画像

Re:1、0の反転

Posted: 2010年8月15日(日) 13:58
by palladium
BOOL bFlag = FALSE;
bFlag = !bFlag;

Re:1、0の反転

Posted: 2010年8月15日(日) 20:22
by みすた
それもスマートですね。
ありがとうございます。

Re:1、0の反転

Posted: 2010年8月15日(日) 22:09
by バグ
単純に短いだけなら…

a ^= 1

でどうでしょうか?

Re:1、0の反転

Posted: 2010年8月15日(日) 22:16
by Justy
a = 1 - a
とか。