#include<stdio.h>
int main()
{
float score;
printf("请输入成绩:");
scanf("%f",&score);
if(score>100||score<0)
{
printf("输入成绩错误");
}
else
{
score=(int)score/10; //为什么这串代码使用了强制转换还是无法继续进行
}
switch(score)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:printf("不及格");break;
case 6:printf("及格");break;
case 7:printf("中等"); break;
case 8:printf("良好");break;
case 9:
case 10:printf("优秀");break;
}
return 0;
}
当赋值表达式两边的数据类型不一致时,以左边的数据类型为准,右边的数据类型向左边看齐。
即右边数据类型所占字节数如int,小于左边float所占字节数,则右边要转为float型数据。
建议再定义一个整型变量,对score进行强制转换后再赋值。
score是浮点类型的,case的常量表达式是整型的,所以不行,你强转了,score还是浮点类型没有变
score=(int)score/10;,是将score的类型强制装换为整型后给出,但score的类型没有发生改变
将score/10用int i变量来就好了