我有一个关于 switch
语句的问题。
这是我的代码:
#include<stdio.h>
int main()
{
float a=0.0f;
float b=0.0f;
char operation=0;
printf("Enter expression:");
scanf("%f %c %f",&a,&operation,&b);
switch(operation)
{
case '+':
printf("=%.2f\n",a+b);
break;
case '-':
printf("=%.2f\n",a-b);
break;
case '*':
printf("=%.2f\n",a*b);
break;
case '/':
if(b==0)
printf("\ndivision by zero error.\n");
else
printf("=%.2f\n",a/b);
break;
case '%':
if(b==0)
printf("\ndivision by zero error.\n");
else
printf("=%d\n",(int)a%(int)b);
break;
default:
printf("invalid operation\n");
break;
}
return 0;
}
这是关于两种不同输入的结果,一种正确,一种错误。
为什么当我输入两个字母而不是两个数字时,它会进入 default
大小写?
最佳答案
a+b
不会匹配您的 scanf
的格式字符串,因为它期望 float 而不是字符(如 a
或 b
),因此 scanf
不执行任何操作。
scanf
返回它能够读取的项目数,在本例中为 0。检查它的返回值是个不错的主意。
并且由于 operation
被初始化为 0
,默认情况下将执行。
关于c - 为什么在这个 switch 语句中匹配 default 大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60916197/