C++简单的程序问题

来源:百度知道 编辑:UC知道 时间:2024/09/18 06:23:49
#include <iostream>
using namespace std;
int main()
{
char x;
x=getchar();
switch (x>='A' && x<='Z')
{
case ('W'): x='A';break;
case ('X'): x='B';break;
case ('Y'): x='C';break;
case ('Z'): x='D';break;
default : x=x+4;
}
cout<<x<<endl;
return 0 ;
}
我输入一个大写的Z||Y||X||W结果都执行default : x=x+4;这一个请问这是为什么
问题是我想给X一个范围 在SWITCH后(是可以是一个表达式啊)

switch用法:先计算表达式的值,再将值与case后的常量表达式值比较,相同就执行其后的语句,若没有一个常量表达式的值与switch后表达式的值相同,则执行default后的语句。
例中 switch(x>='A' && x<='Z'),表达式计算后的值是一个逻辑值,与case后所有的常量表达式值当然都不会相同啦,所以执行default后的语句,要给X一个范围,只好用if语句加个判断在前面了
if (x>='A' && x<='Z')
switch (x)
{
case ('W'): x='A';break;
case ('X'): x='B';break;
case ('Y'): x='C';break;
case ('Z'): x='D';break;
default : x=x+4;
}

switch (x>='A' && x<='Z')
不对

switch(x)

switch的用法有问题,在 baidu上搜了一个,你看下
http://tieba.baidu.com/f?kz=476374438

同意3楼观点,switch最好不用表达式,只会使你的程序没有可读性

我也同意3楼观点,switch最好不用表达式,