[解決済み] bool の &= と |= 演算子は短絡するのでしょうか?
2022-03-04 16:29:41
質問
C++でこのようなコードを書く場合。
bool allTrue = true;
allTrue = allTrue && check_foo();
allTrue = allTrue && check_bar();
check_bar()
は評価されません。
check_foo()
が返される
false
. これは
短絡的な評価または短絡的な評価
であり、遅延評価原則の一部である。
複合代入演算子で動作するか
&=
?
bool allTrue = true;
allTrue &= check_foo();
allTrue &= check_bar(); //what now?
論理的な場合
OR
すべて置き換える
&
で
|
と
true
と
false
.
解決方法は?
C++11から
5.17 Assignment and compound assignment operators
:
E1 op = E2 の形の式の動作は、E1 が一度だけ評価されることを除けば、E1 = E1 op E2 と等価である。
しかし、あなたは論理ANDを混同しています。 が行います。 と、決して短絡しないビット単位のAND。
テキストスニペット
&&=
であり、ご質問のようなことを行うには、次のようになります。
どこにも
は標準では見当たりません。その理由は、実際には存在しないからです。論理代入演算子はありません。
関連
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] C++の規格では、初期化されていないboolがプログラムをクラッシュさせることは可能ですか?
-
[解決済み】boolのprintfフォーマット指定子とは?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された