[解決済み] C++でブール値にビット演算子を使用する
2023-04-16 06:36:20
質問
C++で"bool"の値にビット演算子&、|、^を使用しない理由はありますか?
私は時々、2 つの条件のうちのちょうど 1 つが真になるようにしたい状況に遭遇します (XOR)。また、結果が真であるかどうかにかかわらず、条件のすべての部分が評価されることを望むことがあるので (短絡的に判断するのではなく)、私は & と | を使用します。また、ブール値を累積する必要がある場合もあり、&=と|=は非常に便利です。
私はこれを行うとき、いくつか眉をひそめられたことがありますが、コードはまだ意味があり、そうでない場合よりもきれいです。これらをブールに使用しない理由はあるのでしょうか。このために悪い結果を与える最近のコンパイラーはありますか?
どのように解決するのですか?
||
そして
&&
はブール演算子で、組み込みのものはどちらかを返すことが保証されています。
true
または
false
. それ以外はありません。
|
,
&
と
^
はビット演算子です。操作する数値のドメインが1と0だけであれば、両者は全く同じですが、C言語のようにブーリアンが厳密に1と0でない場合、望まない動作になってしまうことがあります。たとえば
BOOL two = 2;
BOOL one = 1;
BOOL and = two & one; //and = 0
BOOL cand = two && one; //cand = 1
しかし,C++では
bool
型のどちらかのみであることが保証されています。
true
または
false
(に暗黙のうちに変換されます)。
1
と
0
など)なので、このスタンスでは心配は少ないのですが、人々がコードでこのようなものを見るのに慣れていないという事実が、それをしないことの良い論拠となります。単に
b = b && x
と言って終わりです。
関連
-
[解決済み] エラーが発生する。ISO C++は型を持たない宣言を禁じています。
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] C言語でのブーリアン値の使用
-
[解決済み] 3つのブール値のうち、少なくとも2つが真であるかどうかをチェックする
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] ビット演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】coutはstdのメンバではない
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む