为什么下面的代码会产生警告:“警告:开关条件具有布尔值”
#include <iostream>
using namespace std;
int main() {
const bool yes = true;
switch (yes) {
case true: cout << "sure" << endl; break;
case false: cout << "nope" << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
switch 语句只接受数字和字符吗?
我的猜测是编译器编写者想警告您有关以下潜在错误的信息:
char c;
[...]
switch(c==getchar()) // oops! Probably not what was intended
{
case 'a': cout << "you entered a" << endl; break; // will never be called
case 'b': cout << "you entered b" << endl; break; // will never be called
// will always be called, because (c==getchar()) always evaluates to either 0 or 1
default: cout << "you entered something else: " << c << endl; break;
}
Run Code Online (Sandbox Code Playgroud)
...当你打算写:
char c;
[...]
// works as advertised
switch(c=getchar())
{
case 'a': cout << "you entered a" << endl; break;
case 'b': cout << "you entered b" << endl; break;
default: cout << "you entered something else: " << c << endl; break;
}
Run Code Online (Sandbox Code Playgroud)
通常你不会switch在布尔值上使用,因为只有两种可能的情况,if或者三元运算符也可以,例如:
if (yes) cout << "sure" << endl;
else cout << "nope" << endl;
Run Code Online (Sandbox Code Playgroud)
... 甚至
cout << (yes ? "sure" : "nope") << endl;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |