#include <stdio.h>
int main()
{
int score = 87; //考试分数为87分
switch(score)
{
/*想想以下代码为什么用这种方式;
这种方式的好处?*/
case 100:
case 90:
printf("等级A");
break;
case 90:
case 80:
printf("等级B");
break; //这里是不是缺点什么?
case 70:
case 60:
printf("等级C");
break; //这里是不是缺点什么?
default:
printf("等级D");
break;
}
return 0;
}
有两点:
第一点是:除法运算符“/”是双目运算符,具有左结合性。
如果参与运算量均为整型时,结果也为整型,舍去小数。
如果运算量中有一个是实型(实型变量分为单精度(float),双精度(double)和长双精度(long double)型),则结果为双精度实型。
第二点是:自动转换。
发生在不同数据类型运算时,在编译的时候自动完成。
注意:字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换
#include <stdio.h> int main() { int score = 87; //考试分数为87分 int a = 10; float b = 10.0; double c = 10.000000; printf("%d\n",score / a); printf("%f\n",score / b); printf("%f\n",score / c); printf("%d\n",score / b); // 错误结果 printf("%d\n",score / c); // 错误结果 return 0; }
回复 慕粉4367945:本门课程2章8、9节就讲。
#include <stdio.h> int main() { char c = 'a'; // 自动类型转换 int n = c; //将c赋值给n float f = c; //将c赋值给f double d = c; //将c赋值给d int x = d; // 数据精度丢失 warning: converting to `int' from `double' // 强制类型转换 int y = (int)d; printf("%d\n",n); printf("%f\n",f); printf("%lf\n",d); printf("%d\n",x); printf("%d\n",y); return 0; }
#include <stdio.h>
int main()
{
int score = 87,a; //考试分数为87分
a=score/=10;
switch(a)
{
case 10:
case 9:
printf("等级A"); break;
break;
case 8:
printf("等级B"); break;
case 7:
case 6:
printf("等级C"); break;
default:
printf("等级D");break;
}
return 0;
}
你这里没有对应的case 87:与之对应输出,如果是switch(a),那下面会输出的case就是对应的 case a://注意这里a是整数要用int定义