• ベストアンサー

BOOL値を逆にしたい

【環境】 WindowsXP(SP2) VisualStudio2005++(MFC) タイトルの通りなんですが、ある条件の時に BOOL flg; の値をtrueの場合は「false」に、 falseの場合は「true」にしたいです。 参考書やネットを探してみたんですが、 「これ!」ってのが見つけられず(そもそも何でググれば良いのか分からない・・・。)、どなたか教えてくださいませんか? if(flg) flg = FALSE; else flg = TRUE; これじゃ汚いですよね・・・?

  • ya-cha
  • お礼率68% (184/268)

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

flg = !flg; 否定した値(つまり、反対の値)を取ればよい。

ya-cha
質問者

お礼

早速のご回答ありがとうございます!

その他の回答 (1)

回答No.2

BOOLはWinDef.hでintのtypedefとして 定義されていますが falseがFALSE(0)固定で trueがTRUE(1)固定にするなら flg^=1; //flg^=TRUE; で大丈夫です。 0以外の何かが入っているけど1とは限らない状態がtrueで、そこから 逆のFALSEかTRUEにするなら flg=!flg; でいいと思います。

ya-cha
質問者

お礼

早速のご回答ありがとうございます! ご丁寧に色々記載いただき、感謝感謝ですm(__)m

関連するQ&A

  • BOOLの初期値は?

    <プログラム環境> Windows XP VC++6.0 MFC AppWizard(exe) ダイアログベース <質問> BOOL bl; と宣言した後、必ず bl = FALSE; と初期値を入れているのですが、元々FALSEかTRUEのどちらか、 決まった初期値が入っているのでしょうか?

  • 条件判断の記述方法

    いつも下記のような記述でまよってしまいます。 どちらがスマートな書き方なのでしょうか。 もしくはそもそもの書き方がおかしいでしょうか。 [記述方法1] foreach( string s in k.keys ) { if( s == "ok" ) goto OK; } //NGな処理 return false; //OKな処理 OK: return true; [記述方法2] bool ok_flg = false; foreach( string s in k.keys ) { if( s == "ok" ) { ok_flg = true; break; } } if( ok_flg ) { //OKな処理 }else{ //NGな処理 } return ok_flg;

  • コード(Python)の解説をして頂きたいです

    このコードはスペースが2つ以上ある場合スペースを一つだけにする、そして文の最初と最後にスペースがあった場合そのスペースを消すというコードだということは理解出来たのですが、flgはなんの略なのかということと、ans = ans[1:] if ans[0] == ' ' else ans ans = ans[:-1] if ans[-1] == ' ' else ans このコードのelse ansはどのような働きをしているのか分かりません。 もし宜しければ解説をして頂きたいです。 def removeExtraSpaces(theString): ans = '' flg = True for s in theString: if s == ' ': if flg: ans += s flg = False continue flg = True ans += s ans = ans[1:] if ans[0] == ' ' else ans ans = ans[:-1] if ans[-1] == ' ' else ans return ans

  • Pythonのコードの解説をお願いします

    このコードはスペースが2つ以上ある場合スペースを一つだけにする、そして文の最初と最後にスペースがあった場合そのスペースを消すというものだとういうことは理解出来たのですが、なんでこういうコードを書いたぬぬかついんのか、 def removeExtraSpaces(theString): ans = '' flg = True for s in theString: if s == ' ': if flg: ans += s flg = False continue flg = True ans += s ans = ans[1:] if ans[0] == ' ' else ans ans = ans[:-1] if ans[-1] == ' ' else ans return ans これを解説して

  • rubyの構文(&&を用いた条件分岐について)

    ruby初心者です。 最近、ruby on railsで書かれたソースを引き継ぎ解析を行っています。 その中で、以下のような構文が出てきました。 ========================================= num = 0 bool = false vals = '' puts 'start' num == 0 && bool && if vals  puts 'true' else  puts 'false' end puts 'end' ========================================= 上記プログラムを実行すると、if ~ end までが実行されませんでした。 そこで、変数boolをtrueに変更して再実行したところ、if文が実行されました。 そこで私は、上記プログラムは以下と同値であると解釈しました。 ====================================== (省略) if num == 0 && bool  if vals   puts 'true'  else   puts 'false'  end end ======================================= 以上を踏まえて・・・ 1.私の解釈は正しいでしょうか? 2.間違っている場合、正しい処理の解釈を教えていただけますでしょうか?または参考URLを教えていただけますと助かります。 文の最後に"&&"がついている文を見たことがなく、ネットで調べても 正解らしいものが掲載されていなかったので質問させていただきました。 拙い説明で申し訳ありませんが、よろしくお願いいたします。

    • ベストアンサー
    • Ruby
  • javaのプログラムについての質問です。

    javaのプログラムについての質問です。 javaについて、あまり詳しくないので質問させていただきます。 ボタンを押して円などの色を変えるプログラムで、2色を変える(黄→赤)if文は public void actionPerformed(ActionEvent e) { if (bool) { setBackground(Color.yellow); this.bool = false; } else { setBackground(Color.red); this.bool = true; の様にfalseとtrueを使えばできるのですが、もし3、4色の場合はif文の中をどうしたら良いですか? できれば、ボタンを押すたびに黄→赤→黒→黄…など3~4色のループするようにしたいです。 いろいろ考えたのですが、うまくいきません。どなたか教えて下さい。

    • ベストアンサー
    • Java
  • bool

    素数を求めるプログラムを作りました。 素数か、そうでないかを1か0で区別していたのですが、 よりメモリを効率よく使いたいため、booleanを使ったらどうだという案をいただきやってみたのですが、エラーが出てしまいました。 このプログラムの何がいけないのですか? #include<stdio.h> #include<stdbool.h> #define n 250000 main(){ int i,p,k,w,np,s; bool pn[n]; np=0; for(i=0;i<n;i++){ pn[i]=false; } for(i=0;i<=n;i++){ if(pn[i]==false){ p=3*i+5-(i%2); w=2*p; for(k=i+w;k<=n;k+=w){ pn[k]=true; } s=5*i+7-2*(i%2); for(k=s;k<n;k+=w){ pn[k]=true; } np++; } } printf("%10d",np+2); }

  • if文で・・・

    booleanの判定するときのif文の書き方ですが、 (1) if( !flg ) then (2) if( flg != true ) then (3) if( flg == false ) then のどれにしますか?

  • 単体テストのやり方

    単体テストってどうやってするのですか?教えてください。 例えば、この関数だったらどういうテストコードを書けばいいですか? bool isStart(char c){ if(c == 'Y'){ return true; } else if(c == 'N'){ return false; } }

  • Boolean型変数の値を反転する方法

    ご存知の方教えて頂けますか? Boolean型変数の値が True なら False,False なら True に変換したいのですが、現在次のようにcodeを書き、希望した値になります。 Dim bool As Boolean 中略 bool = bool - True このcodeは正しいのでしょうか? 他に ”正しい方法”があるのでしょうか? スミマセン!よろしくお願いします。