• 技术文章 >后端开发 >C#.Net教程

    c语言怎么进行强制类型转换

    青灯夜游青灯夜游2021-04-25 16:46:59原创2739

    在c语言中,可以通过“(新类型名称) 数据或表达式”语句来进行强制类型转换;例如“(float) 100”就是将数值100(默认为int类型)转换为float类型,“(int)(x+y)”就是将表达式“x+y”的结果转换为int整型。

    本教程操作环境:windows7系统、c99版本、Dell G3电脑。

    数据类型转换就是将数据(变量、数值、表达式的结果等)从一种类型转换为另一种类型。

    c语言有两种数据类型方式:

    自动类型转换是编译器根据代码的上下文环境自行判断的结果,有时候并不是那么“智能”,不能满足所有的需求。如果需要,程序员也可以自己在代码中明确地提出要进行类型转换,这称为强制类型转换。

    自动类型转换是编译器默默地、隐式地进行的一种类型转换,不需要在代码中体现出来;强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换。换句话说,自动类型转换不需要程序员干预,强制类型转换必须有程序员干预。

    强制类型转换的格式为:

    (type_name) expression

    type_name为新类型名称,expression为表达式。例如:

    (float) a;  //将变量 a 转换为 float 类型
    (int)(x+y);  //把表达式 x+y 的结果转换为 int 整型
    (float) 100;  //将数值 100(默认为int类型)转换为 float 类型

    下面是一个需要强制类型转换的经典例子:

    #include <stdio.h>
    int main(){
        int sum = 103;  //总数
        int count = 7;  //数目
        double average;  //平均数
        average = (double) sum / count;
        printf("Average is %lf!\n", average);
        return 0;
    }

    运行结果:

    Average is 14.714286!

    sum 和 count 都是 int 类型,如果不进行干预,那么sum / count的运算结果也是 int 类型,小数部分将被丢弃;虽然是 average 是 double 类型,可以接收小数部分,但是心有余力不足,小数部分提前就被“阉割”了,它只能接收到整数部分,这就导致除法运算的结果严重失真。

    既然 average 是 double 类型,为何不充分利用,尽量提高运算结果的精度呢?为了达到这个目标,我们只要将 sum 或者 count 其中之一转换为 double 类型即可。上面的代码中,我们将 sum 强制转换为 double 类型,这样sum / count的结果也将变成 double 类型,就可以保留小数部分了,average 接收到的值也会更加精确。

    在这段代码中,有两点需要注意:

    相关推荐:《C语言视频教程

    以上就是c语言怎么进行强制类型转换的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:c语言开根号代码是什么 下一篇:c语言输入成绩怎么判断等级
    第16期线上培训班

    相关文章推荐

    • c语言程序总是从main函数开始执行吗?• c语言二分法如何实现查找数组元素• c语言如何查找字符串指定字符• c语言源程序文件名的后缀是什么• visual studio怎么创建c语言

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网