C++开关语句不允许我使用多个"or"?什么?
C++ switch statement doesn't let me use more than one "or"? What?
这真的很奇怪。因此,我有一个简单的switch case语句,它应该在用户键入字母的大写或小写版本时执行操作:
switch (choice)
{
case 'A' || 'a':
cout << "hello"; break;
case 'B' || 'b':
cout << "hello"; break;
case 'C' || 'c':
cout << "hello"; break;
case 'D' || 'd':
cout << "hello"; break;
}
MS Visual Studio为情况"B"/"B"、"C"/"C"answers"D"/"D"给出了三个错误,每个错误都表示以下内容:
IntelliSense: case label value has already appeared in this switch
它不会给我这个"A"/"A"的错误——如果我去掉了情况A,它允许情况B,但不允许下面的情况。我想不出有什么理由可以对第一种"或"情况进行处理,但对以下情况感到不安。
上下文:写一个容器类,这个代码在主函数之外,但我认为这与它无关
有什么想法吗?如果这在C++中是不允许的,那么有没有更好的方法可以为一种情况包含多个选项?
||
是逻辑OR。它的操作数被转换为bool
——零被转换为false
,所有其他操作数被转化为true
。结果是true
或false
,然后分别转换为1
和0
。因此,您的所有四个case都等效于case 1:
,编译器会抱怨,因为在同一个switch
语句中不能有两个值相同的case常量。
你想要的是:
case 'A':
case 'a':
cout << "hello"; break;
这利用了跌倒行为。
case 'A' || 'a':
->情况1:
逻辑运算符的输出可以是true(1)或false(0),所以编译器将有多个0和1的开关情况。
因此,不可能决定打哪一个电话。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 这在C++ "It does not own the underlying data, and so is cheap to copy or assign"中意味着什么
- 在 if 语句中处理多个 or 的更优雅的方法是什么
- 使用什么 std::可选 or std::unique_ptr
- Google Or-Tools使用什么近似TSP算法
- C++中的"and"、"or"等关键字的目的是什么?
- STL队列(OR堆栈)的deque和链表(+vector)实现之间有什么区别
- C++开关语句不允许我使用多个"or"?什么?
- 'must have an argument of class or enumerated type'到底是什么意思
- 在给定的代码示例中,在 vector::p ush_back() 中"the argument is copied (or moved)"到底是什么意思?
- "Expected '(' for function-style cast or type construction"错误是什么意思?
- "member function already defined or declared" - 这是什么意思?
- 用 -1 'or'值的目的是什么?