为了账号安全,请及时绑定邮箱和手机立即绑定

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;

}


正在回答

3 回答

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



0 回复 有任何疑惑可以回复我~
#1

hc茶

这个语句用处就是固定顺序下固定数值的固定执行;可以节省运算空间
2017-10-27 回复 有任何疑惑可以回复我~
#2

hc茶 回复 hc茶

回错地方了
2017-10-27 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

int 不是整形是什么...

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信