虽然不等于陈述和/或差异
While not equal statement and or differences
while ((choice != "Wizard") && (choice != "Knight"))
这是唯一有效的
while ((choice != "Wizard") || (choice != "Knight"))
while (choice != "Wizard" || "Knight")
老实说,我不明白为什么使用 OR 不起作用,以及当我将它们分开时有什么区别。希望有人能帮忙解释。
取字符串"Wizard"
:
- 它与
"Wizard"
有什么不同吗?不。 - 它与 rom
"Knight"
有什么不同吗?是的。
所以"不同于巫师和不同于骑士"是错误的(它与"巫师"没有区别(。但是,"不同于巫师或不同于骑士"是正确的(它确实与"骑士"不同(。
至于第三种形式,choice != "Wizard" || "Knight"
被解析为(choice != "Wizard") || "Knight"
."Knight"
是一个字符串文本,因此,它在大多数表达式中衰减为非空指针。由于不为空,指针将转换为true
。所以你实际上是在问:"choice
与"Wizard"
或真实不同。当然,这总是正确的。
作为不断增长的(choice != "...") &&
链的替代方案,您可以创建一个要测试的事物的容器,并查看选择是否是该容器的一个元素。
static const std::unordered_set<std::string> options = {
"Wizard",
"Knight",
"Rogue",
"Basket Weaver",
};
while (options.count(choice) == 0)
相关文章:
- 为什么 std::round(sin(pi/6)) 不等于 1?
- 你怎么编码,如果x不等于一个数字,程序就会退出
- u张量模型输出不等于预期输出
- 虽然不等于陈述和/或差异
- 这种关系不等于定义良好的表达式吗?
- OpenGL 版本不等于支持的着色器版本
- 两个 4 位位字段加起来不等于一个字节的大小 - 如何修复?
- 如果整数不等于 0,则将其减小为 1
- C 循环虽然不等于任何两个值
- vb.net单不等于c float
- 如何获取C编译器#Error如果大小(struct ..)不等于给定的数字
- C++ 而语句不等于检查
- 有没有办法检查int是否不等于数组中的所有值?(C )
- 整数数组中的元素数量不等于其大小
- 获取不等于特定值的向量的第一个N元素
- 使用 boost 解析符号链接时,结果不等于原始路径名
- 什么是有效的检查:等于或不等于
- 发送的字节不等于C 套接字PRG中的接收字节
- 奇怪的不等式 - WC_BUTTONW不等于 L "Button" ?
- 为什么向导Wiz0;不等于向导Wiz0();在我的代码中?C2228错误