1、0の反転

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みすた

1、0の反転

#1

投稿記事 by みすた » 15年前

int a;
(中略)
if(a == 0) a = 1;
else if(a == 1) a = 0;

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

softya

Re:1、0の反転

#2

投稿記事 by softya » 15年前

XORは指定したビットしか反転しませんよ。
a = a ^ 1;

みすた

Re:1、0の反転

#3

投稿記事 by みすた » 15年前

そうだったんですか!知りませんでした。
ありがとうございました。 画像

palladium

Re:1、0の反転

#4

投稿記事 by palladium » 15年前

BOOL bFlag = FALSE;
bFlag = !bFlag;

みすた

Re:1、0の反転

#5

投稿記事 by みすた » 15年前

それもスマートですね。
ありがとうございます。

バグ

Re:1、0の反転

#6

投稿記事 by バグ » 15年前

単純に短いだけなら…

a ^= 1

でどうでしょうか?

Justy

Re:1、0の反転

#7

投稿記事 by Justy » 15年前

a = 1 - a
とか。

閉鎖

“C言語何でも質問掲示板” へ戻る