无法理解输入3的switch语句的输出
我不明白…请帮我找到这个代码的计算方法。 (输入为3) 输入3的输出为(实际): 三十三 五, 不应该是这样的吗?以下两个(预期): 九,无法理解输入3的switch语句的输出,c,switch-statement,case,C,Switch Statement,Case,我不明白…请帮我找到这个代码的计算方法。 (输入为3) 输入3的输出为(实际): 三十三 五, 不应该是这样的吗?以下两个(预期): 九, 6它不工作的原因是默认值:完成后,没有中断因此控制继续进入案例9的代码中。这是固定的: int a = 9, b; scanf("%d", &b); switch(a+b) { case 3: a+= b * 2 - (a-b); b = a + b; break; case 5:
6它不工作的原因是
默认值:
完成后,没有中断代码>因此控制继续进入案例9的代码中。这是固定的:
int a = 9, b;
scanf("%d", &b);
switch(a+b)
{
case 3:
a+= b * 2 - (a-b);
b = a + b;
break;
case 5:
a%=b;
break;
case 9:
a+= a * 3 - (a-b);
b = a/b;
break;
default:
a-= b * 2 - (a-b);
b = a - b;
break;
}
printf("a = %d\nb = %d\n",a,b);
此外,以某种方式排序案例的可读性更好,而不仅仅是随机排序<代码>默认值
也总是在底部。在3
或默认值
案例的末尾没有break
语句,因此代码在遇到中断
或到达开关
的末尾之前,一直跌入以下案例
确保在每个案例后添加一个中断
。此外,按照惯例,默认值
案例应位于底部:
switch(a+b)
{
case 3:
a+= b * 2 - (a-b);
b = a + b;
break;
case 9:
a+= a * 3 - (a-b);
b = a/b;
break;
case 5:
a%=b;
break;
default:
a-= b * 2 - (a-b);
b = a - b;
break;
}
在大多数
案例
块之后,您的开关
语句缺少中断
s,因此将执行多个案例(包括默认
案例,因为a+b
(12)不是指定案例之一)。大多数人将默认设置为最后一个案例,但没有要求这样做。
switch(a+b)
{
case 3:
a+= b * 2 - (a-b);
b = a + b;
break;
case 9:
a+= a * 3 - (a-b);
b = a/b;
break;
case 5:
a%=b;
break;
default:
a-= b * 2 - (a-b);
b = a - b;
break;
}