while ((choice != "Wizard") && (choice != "Knight"))
これが働いた唯一のものです
while ((choice != "Wizard") || (choice != "Knight"))
while (choice != "Wizard" || "Knight")
正直なところ、ORを使用しても機能しない理由と、ORを使用した場合の違いはわかりません。誰かが説明を手伝ってくれることを願っています。
回答 2 件
(choice != "...") &&
の増え続けるチェーンの代替として 代わりに、テストするもののコンテナを作成し、選択がそのコンテナの要素であるかどうかを確認できます。static const std::unordered_set<std::string> options = { "Wizard", "Knight", "Rogue", "Basket Weaver", }; while (options.count(choice) == 0)
関連記事
- Ifステートメントを使用した基本的なwhileループ
- 条件が尊重される場合はwhileループを使用し、そうでない場合はifステートメントを使用します
- Postgresqlの列を無視しながら、Group-byを使用してステートメントを選択します
- このswitchステートメントの実行時にwhileループが終了するのはなぜですか?
- whileループとifステートメントはいつ使用する必要がありますか?
- Pythonでwhileループステートメントを繰り返すにはどうすればよいですか?
- forループをネストされたwhileループに変換する方法(Pythonのifステートメントが機能する場合)
- whileループのifステートメントの外側に出力する
- if/elif/elseステートメントを使用したwhileループ
- 実行中に「didSelectRowAt」関数で「else」ステートメントが実行されていません
文字列
"Wizard"
を取得します :"Wizard"
とは異なりますか ?番号。rom
"Knight"
は違いますか ?はい。したがって、「ウィザードとは異なり、ナイトとは異なる」は偽です(「ウィザード」とは異なりません)。ただし、「ウィザードとは異なる、またはナイトとは異なる」は正しい(「ナイト」とは異なる)。
3番目の形式については、
choice != "Wizard" || "Knight"
(choice != "Wizard") || "Knight"
として解析されます 。"Knight"
文字列リテラルであるため、ほとんどの式で非ヌルポインターに減衰します。ヌルではないため、ポインターはtrue
に変換されます 。だからあなたは効果的に尋ねています: "choice
"Wizard"
とは異なります OR true。」それはもちろん常に真実です。