在c语言中,可以通过“(新类型名称) 数据或表达式”语句来进行强制类型转换。强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换。

本教程操作环境: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

int main(){

int sum = 103; //总数

int count = 7; //数目

double average; //平均数

average = (double) sum / count;

printf("Average is %lf!

", 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 接收到的值也会更加精确。

在这段代码中,有两点需要注意:对于除法运算,如果除数和被除数都是整数,那么运算结果也是整数,小数部分将被直接丢弃;如果除数和被除数其中有一个是小数,那么运算结果也是小数。

( )的优先级高于/,对于表达式(double) sum / count,会先执行(double) sum,将 sum 转换为 double 类型,然后再进行除法运算,这样运算结果也是 double 类型,能够保留小数部分。注意不要写作(double) (sum / count),这样写运算结果将是 3.000000,仍然不能保留小数部分。

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

c语言强制类型转换例子简单,c语言怎么进行强制类型转换相关推荐

  1. c语言编译器下载 天天,简单C语言编译器(编译原理)

    简单C语言编译器(编译原理) (26页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 #include#include#include# ...

  2. C语言自动类型转换和强制类型转换详解,C语言强制类型转换 - 地狱的烈火的个人页面 - OSCHINA - 中文开源技术交流社区...

    C语言中的类型转换 C语言中的类型转换有两种,自动与强制. 它们都有几种情况,如不同长度的转换:不同类型的转换:还有无符号与有符号数之间的转换.关键是两点,即长度不同时如何转换,在有无符号数参与时如何 ...

  3. c语言强制转换字符类型,C语言中的数据类型转换问题

    C语言中的数据类型转换问题 ● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围 ...

  4. c语言强制转换为结构体,C语言结构体的强制类型转换

    陈浩师兄03年的一篇博客<用C写有面向对象特色的程序>描述了用C语言来实现相似C++类继承的方法,这样方法的核心要点就是结构体的强制类型转换,让我来简单分析分析C语言中的结构体强制类型转换 ...

  5. c语言不通类型指针转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...

    强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...

  6. MAC下 Intellij IDEA GO语言插件安装及简单案例

    MAC下 Intellij IDEA GO语言插件安装及简单案例 GoLang专有IDE GoLand : http://www.jetbrains.com/go/ 下载地址 Intellij IDE ...

  7. C语言学习笔记01:C语言基础语法_变量类型_类型转换

    文章目录 C语言第一天课程笔记 1. 内容安排 2. 课堂笔记 2.1 计算机硬件 2.2 计算机软件 2.3 编程语言和编译器 2.4 编程语言发展 2.5 C语言标准 2.6 C语言学习理由 2. ...

  8. python 消息队列 go_gmq: gmq是基于redis提供的特性,使用go语言开发的一个简单易用的消息队列;支持延迟任务,异步任务,超时任务,优先级任务...

    1. 概述 gmq是基于redis提供的特性,使用go语言开发的一个简单易用的队列;关于redis使用特性可以参考之前本人写过一篇很简陋的文章Redis 实现队列; gmq的灵感和设计是基于有赞延迟队 ...

  9. python简单编程-编程中最简单的语言Python,这样学或许更容易

    最近微信小程序上面出了一个跳一跳的小游戏 大家有没有玩呀? 编程中最简单的语言Python,这样学或许更容易 分享之前我还是要推荐下我自己建的Python开发学习群:628979297,群里都是学Py ...

最新文章

  1. Palo Alto 防火墙升级 Software
  2. 一文详解单目结构光参数法
  3. 台式电脑键盘f1是计算机怎么取消,开机F1怎么取消,教您开机F1怎么取消
  4. 【Pushgateway】正则匹配,分隔逗号成数组
  5. [转载]HTTP PUSH技术原理,结合ASP.NET实现以及评述
  6. 【必备知识点】JavaScript里面那些天天使用的API
  7. Eclipse更改默认字符集 设置UTF-8
  8. 谈谈基于SQL Server 的Exception Handlingp[下篇]
  9. 【计蒜客 - 蓝桥训练】轻重搭配(贪心,STLset 或 二分)
  10. 【python零基础入门学习】Python入门,带你快速学习,Python 环境搭建
  11. [转] 做一个让人欣赏的女子
  12. robbin界面 java_使用JAVA和C#开发Ribbon界面
  13. MySQl 5.7版本的Data文件夹,my.ini文件,Uploads文件夹所在目录
  14. 2022-2027年中国海参行业市场深度分析及投资战略规划报告
  15. composer更换国内镜像地址
  16. 学UG编程一定要把握的曲面驱动的办法、切削区域、切削类型
  17. C++编写中的一些特殊符号
  18. 生活记录:突然“醒来”
  19. 有限等距性质RIP理解
  20. 树莓派连接笔记本显示器(转载+整合)

热门文章

  1. HD630核显,Deepin安装进度条卡0%、开机卡logo界面、进入桌面鼠标一直转圈解决方法
  2. 【python初级】hasattr函数判断对象是否包含某属性
  3. Python的hasattr() 函数
  4. 蚁群算法及TSP问题的matlab代码记录
  5. UG NX 12 设置启动时自动打开模板
  6. 中国卸妆油行业市场供需与战略研究报告
  7. 最小公倍数 php,PHP编程求最大公约数与最小公倍数的方法示例
  8. 中国软件产业最大规模前100家企业统计
  9. 2006年中国软件收入规模前100家企业名单(转自sina)
  10. iphone恢复模式_如何使用iPhone的人像模式