score类型不是整形吗,为什么可以直接除以10不用强制转换int取整?

来源:4-16 分支结构之switch语句

qq_打死白学家_0

2017-09-24 18:20


#include <stdio.h>

int main() 

{

    int score = 87; //考试分数为87分 

    score=(int)score/10;

    switch(score)

    {

        /*想想以下代码为什么用这种方式;

          这种方式的好处?*/

        case 10:

        break;

        case 9:

            printf("等级A");

            break;

        case 8:

            printf("等级B");

            break;                //这里是不是缺点什么?            

        case 7:

        break;

        case 6: 

            printf("等级C");

            break;               //这里是不是缺点什么?  

        default:

            printf("等级D");

            break;    

    }

    return 0;

}


写回答 关注

3回答

  • hc茶
    2017-10-27 15:42:00

    score本身就是int类型的,87/10原本应该是8.7但由于变量本身为int型所以8后面的.7会被自动舍弃所以不用使用强制转换,但是如果你的程序是

    int a;

    float b;

    a=87;

    b=(int)(a/10);/*用强制转换取整,此时b=8.000[a/10没有括号的话会先强制转换a为87.000,无法得到取整结果]*/



    hc茶 回复hc茶

    回错地方了

    2017-10-27 16:05:00

    共 2 条回复 >

  • qq_木_arENRZ
    2017-09-29 16:49:34

    这个你能运行出来吗?我这个不会

  • 什么天长地久
    2017-09-24 20:27:43

    int 不是整形是什么...

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926210 学习 · 20797 问题

查看课程

相似问题