问答详情
源自:4-16 分支结构之switch语句

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


#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;

}


提问者:qq_打死白学家_0 2017-09-24 18:20

个回答

  • 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,无法得到取整结果]*/



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

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

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

    int 不是整形是什么...