c++ switch语句,一个case后面可以跟多个常量吗

switch(a)
当a=1,3,5,7,9 输出单数;a=2,4,6,8,10 输出双数;
为什么不能用 case 1,3,5,7,9:这种格式?
还有如果是下面的代码
switch(a)
{ case 1: case 3: case 5: case 7: case 9:
cout<<"单数"<<endl;

case 2: case 4: case 6: case 8: case 10:
cout<<"双数"<<endl;
}
为什么当a=1,3,5,7,9的时候会同时输出单数和双数两个结果?而a是双数就只有双数
能详细解释一下吗?

你cout<<"单数"<<endl;后面应该写个break;否则遇到1,3,5,7,9的情况,程序会继续往下执行,判断2,4,6,8,10,然后会输出"双数",正确的写法如下:

    switch(a)
    {    
    case 1:    
    case 3:    
    case 5:    
    case 7:    
    case 9:
        cout<<"单数"<<endl;
        break;

    case 2:    
    case 4:    
    case 6:    
    case 8:    
    case 10:
        cout<<"双数"<<endl;
        break;
    }

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-04

你去看一下switch case 分支支的介绍就知道了


switch的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break(事实上是return 和 goto 也可以打断)。

switch (a)
{

case 1:

case 3:

case 5:

case 7:

case 9:
    cout<<"单数"<<endl;

    break;

case 2:

case 4:

case 6:

case 8:

case 10:
    cout<<"双数"<<endl;

}

追问

那 int a,b; 可以通过
而 case 1,3,5,7,9 就不能通过?

追答

不能的,C和C++中目前没有这种语法结构。

本回答被提问者和网友采纳
第2个回答  2014-02-25
一个整型常量值
第3个回答  2014-02-25
一个整型值
第4个回答  2014-02-25
多些几个case不写语句就行了啊。。

c++ switch语句,一个case后面可以跟多个常量吗
你cout<<"单数"<<endl;后面应该写个break;否则遇到1,3,5,7,9的情况,程序会继续往下执行,判断2,4,6,8,10,然后会输出"双数",正确的写法如下:switch(a) { case 1: case 3: case 5: case 7: case 9: cout<<"单数"<<endl; break; case 2: case 4...

C++中switch语句中case分句后面只能跟字符量吗?
只要是能表示成 整数结果的表达式 全都可以

SWTICH语句case后面只能接一个表达式吗?
SWITCH语句中的case条件限制明确:每个case后面必须跟一个编译期确定的整型常量表达式,作为唯一标签,用于标识不同的分支。这个表达式在编译时必须明确,作为程序中的预设条件。case标签本身并不执行,其作用是标识特定的代码块。可以接零个或多个语句,甚至通过大括号构成复合语句,但并非强制要求。当遇到brea...

c语言switch语句中case后面必须要接整型常量和字符型常量吗
是的,case语句后面的必须是整型常量!整型常量有多种,比如int、char、enum枚举常量,在C++中bool类型也属于整型常量的一种。\/\/一般switch语句使用此种格式switch(表达式){case 常量表达式1:语句1;...case 常量表达式2:语句2;default:语句;}switch是一个整型表达式。case是一个整数常量表达式。只所以不...

SWTICH语句case后面只能接一个表达式吗?
case标签本身不会被执行,一个case标签后可以接零条或多条语句(可以用大括号组成一条复合语句,但不必要),遇到break时控制流跳出switch。1、一个case紧接的条件表达式只能是一个编译期确定的整型常量表达式。case和这个常量表达式组成一个标签,这个表达式是当标号用的,所以必需在编译期确定。2、case...

我想询问一下:switch 语句时,case后面只能接常量么? 例如case 3...
case后面的值是在编译时候就要确定的,所以只能是常量,但不一定非得是1,2,3之类的数字 只要可以确定值就可以,比如(2+4)*3 或不等式:2<5 (这个不等式的值实际上是1)当然也可以出现你说的 ch>'A'&&ch<'Z'但前提是ch必须定义成const类型 如 const ch='B';你可以编程实践下 还有问题...

c++里 case后可以跟多个语句么
可以。用switch语句,最好要注意break的使用,还有最后都加上default 语句。

大家好 C语言里面的 switch case 结构我有个小小的疑问: case后面到底...
case 后面只能是基本类型且应为常量,不能是变量 可能情况再多也要一个一个地写。。。这个没什么好办法的。。如果你能划定几个范围,用if(b[3]>xx && b[3]<<yy)这种来写也可以

switch中case后可否接整形常量表达式
不可以,C语言中的switch case中的case后面仅可以跟整形常量或常量表达式。原因:如果case后面跟 100>x>50是会出现逻辑错误的。首先C语言中像100>x>50这种表达式的意义并不和数学里的一样表示x落在(50,100)这个区间。这个在C语言中100>x会先被计算得到真或假。直接用关系运算得到的真和假在C语言...

switch()中一个case能带多少个常量表达式
就一个,通常:case 1:...break;case 2:...break;case 3:...break;但是如果你确实有多个,可以这么做:case 1:...case 2:...case 3:...break;

相似回答