C 强制类型转换
强制类型转换是把变量从一种类型转换为另一种数据类型。例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型,如下所示:

(type_name) expression

请看下面的实例,使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到一个浮点数:

#include <stdio.h>int main()
{int sum = 17, count = 5;double mean;mean = (double) sum / count;printf("Value of mean : %f\n", mean );}

当上面的代码被编译和执行时,它会产生下列结果:

Value of mean : 3.400000

这里要注意的是强制类型转换运算符的优先级大于除法,因此 sum 的值首先被转换为 double 型,然后除以 count,得到一个类型为 double 的值。

类型转换可以是隐式的,由编译器自动执行,也可以是显式的,通过使用强制类型转换运算符来指定。在编程时,有需要类型转换的时候都用上强制类型转换运算符,是一种良好的编程习惯。

整数提升
整数提升是指把小于 int 或 unsigned int 的整数类型转换为 int 或 unsigned int 的过程。请看下面的实例,在 int 中添加一个字符:

#include <stdio.h>int main()
{int  i = 17;char c = 'c'; /* ascii 值是 99 */int sum;sum = i + c;printf("Value of sum : %d\n", sum );}

当上面的代码被编译和执行时,它会产生下列结果:

Value of sum : 116

在这里,sum 的值为 116,因为编译器进行了整数提升,在执行实际加法运算时,把 ‘c’ 的值转换为对应的 ascii 值。

常用的算术转换
常用的算术转换是隐式地把值强制转换为相同的类型。编译器首先执行整数提升,如果操作数类型不同,则它们会被转换为下列层次中出现的最高层次的类型:

Usual Arithmetic Conversion

常用的算术转换不适用于赋值运算符、逻辑运算符 && 和 ||。让我们看看下面的实例来理解这个概念:

#include <stdio.h>int main()
{int  i = 17;char c = 'c'; /* ascii 值是 99 */float sum;sum = i + c;printf("Value of sum : %f\n", sum );}

当上面的代码被编译和执行时,它会产生下列结果:

Value of sum : 116.000000

在这里,c 首先被转换为整数,但是由于最后的值是 double 型的,所以会应用常用的算术转换,编译器会把 i 和 c 转换为浮点型,并把它们相加得到一个浮点数。

C语言基础教程之强制类型转换相关推荐

  1. c语言常量类型转换,c语言基础教程常量变量和类型转换,免费版.doc

    c语言基础教程常量变量和类型转换,免费版 第二章??????常量变量和类型转换2.1.1数字常量??? 数字常量包括整型常量和浮点型常量,浮点型常量又称实数.????1.整型常量???? HYPERL ...

  2. c++语言基础教程第三版习题答案,《C++语言基础教程》吕凤翥习题答案

    <<C++语言基础教程>吕凤翥习题答案>由会员分享,可在线阅读,更多相关<<C++语言基础教程>吕凤翥习题答案(66页珍藏版)>请在人人文库网上搜索. ...

  3. %3c- r语言运算符,R语言基础教程之运算符

    原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...

  4. C语言不用文件系统读取文件,C语言-基础教程-非缓冲文件系统

    前面介绍的缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符.字符串.格式化数据,也可以读写二进制数据.非缓冲文件系统依赖于操作系统,通过操作系统的功能对文 ...

  5. c语言指针地址交换程序,C语言-基础教程-指针的地址分配

    我们可以定义指针变量指向任何类型的变量.在上述的处理过程中,指针变量指向的变量通过传递变量的地址来实现.指针变量的取值是内存的地址,这个地址应当是安全的,不可以是随意的,否则,写入内存单元的值将会使得 ...

  6. 计算机编程c 语言实型数据,C语言-基础教程-C语言实型数据

    C语言-基础教程-C语言实型数据 分类:计算机等级 | 更新时间:2016-07-08| 来源:转载 2.4.1 实型常量 实型常量又称浮点常量,是一个十进制表示的符号实数.符号实数的值包括整数部分. ...

  7. Go语言基础教程:版本选择

    专题目标:打造Go语言新手入门零基础免费教程 文章核心:一次只解决一个问题,用尽可能短的时间 你好,我是洋一,一个持续向上生长的互联网人. 众所周知,我们学习一门编程语言,很大程度上都离不开搭建该编程 ...

  8. R语言基础教程6:程序设计基础

    R语言基础教程1:数据类型 R语言基础教程2:散点图 R语言基础教程3:曲线图.误差线和图例 R语言基础教程4:柱形图 R语言基础教程5:图形页面排版 R语言基础教程6:程序设计基础 R语言基础教程7 ...

  9. c语言怎么做步骤循环,C语言基础教程之循环

    此程序已经陷入无限循环中,C语言基础教程之循环 当一段代码需要执行多次时,您可能会遇到这种情况.通常,语句按顺序执行:首先执行函数中的第一个语句,然后执行第二个语句,依此类推. 编程语言提供各种控制结 ...

最新文章

  1. 用c语言运行程序的优点,C语言学习与总结---第一章:C语言概述
  2. finally 关键字
  3. jClarity发布Censum 3.0
  4. 【MFC】显示系统时间的状态栏
  5. IDEA 的 debug 怎么实现?出于这个好奇心,我越挖越深!
  6. jQuery的radio,checkbox,select操作
  7. petshop4.0 详解之一(系统架构设计)(转载)
  8. java mongodb开发_Java Tutorial:Java操作MongoDB入门
  9. 软件_搭建rtmp视频推送环境,腾讯云,ubuntu16
  10. ECMAScript 6 基础入门
  11. pyqt5实现窗口跳转并关闭上一个窗口
  12. 关于微信公众号的测试
  13. Java 基础类库:System、Runtime、Object、Math、日期、时间
  14. (免费自取)厦门大学林子雨老师的spark(python)版本的pyspark链接hbase的jar包
  15. FineReport 参数查询
  16. python arduino i2c1602_Arduino使用I2C转接板驱动1602液晶屏,小小白新手入门篇
  17. 使用Laya引擎开发微信小游戏(上)
  18. 名帖72 颜真卿 楷书《竹山堂连句》
  19. 文件夹删除了如何恢复?轻松恢复教学
  20. 计算机类论文答辩常见问题——软件开发类题目

热门文章

  1. [湖南集训] 谈笑风生
  2. (数论)51NOD 1136 欧拉函数
  3. mysql修改表名,列名,列类型,添加表列,删除表列
  4. bzoj千题计划269:bzoj2655: calc (拉格朗日插值)
  5. 访问vector元素方法的效率比较(转)
  6. Spring Boot与Docker部署
  7. NOIP2010-普及组初赛C语言解析
  8. progressbar使用方法:进度画面大小,进度画面背景,进度百分比
  9. PS中的Workflow的创建
  10. CV学习笔记-特征提取