0 c++ switch-statement visual-studio-2013
这真的很奇怪.所以我有这个简单的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;
}
Run Code Online (Sandbox Code Playgroud)
对于案例'B'/'b','C'/'c'和'D'/'d',MS Visual Studio给出了三个错误,每个错误都说明如下:
IntelliSense: case label value has already appeared in this switch
Run Code Online (Sandbox Code Playgroud)
它不会给我带'A'/'a'的错误 - 如果我摆脱了案例A,它允许案例B而不是以下案例.我想不出为什么第一个"或"案件应该没问题的任何理由,但在下列情况下会感到不安.
上下文:编写一个容器类,这段代码在main函数之外,但我不认为它与它有任何关系.
有什么想法吗?如果在C++中不允许这样做,是否有更好的方法为一个案例包含多个选项?
||
逻辑或.它的操作数转换为bool
- 零false
,其他所有true
.结果是true
或者false
,然后分别转换为1
和0
.因此,所有四种情况都是等价的case 1:
,并且编译器会抱怨,因为在同一switch
语句中不能有两个具有相同值的case常量.
你想要的是:
case 'A':
case 'a':
cout << "hello"; break;
Run Code Online (Sandbox Code Playgroud)
它利用了坠落行为.
归档时间: |
|
查看次数: |
2884 次 |
最近记录: |