1. 强制类型转换

强制类型转换是把变量从一种类型转换为另一种数据类型。

语法:

(type_name) expression

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

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

运行结果:

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

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


1.1 整数提升

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

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

运行结果:

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


1.2 常用的算术转换

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

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

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

运行结果:

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



C语言基础:强制类型转换相关推荐

  1. c语言运算符类型转换,C语言中强制类型转换运算符的独特作用

    C语言中强制类型转换运算符的独特作用 在C语言中有一个强制类型转换运算符,它为C语言中的数据类型转换带来 (本文共2页) 阅读全文>> 在进行C++类的设计时,我们常常需要为类对象设计运算 ...

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

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

  3. C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...

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

  4. c语言学习--强制类型转换

    C语言中关于强制类型转换问题 由于朋友问到,所以整理了一份,若关于一些认识有错误还望指出...... ● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再 ...

  5. C语言:强制类型转换、自动类型转换

    C语言中类型转换有两种方式:即强制类型转换和自动类型转换. 一.强制转换比较简单,为:(类型)操作对象. int n1 = 5, n2 = 2; float f1 = (float) 5 / 2; / ...

  6. c语言字符串强制类型转换,C语言学习九 —头文件强制类型转换错误处理

    预处理器 C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤.简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理.我们将把 C 预处理器( ...

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

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

  8. C语言指针强制类型转换

    概要: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给 ...

  9. c语言指针强制类型转换的应用

    指针类型简介 c语言中,指针是就是内存地址,因此使用指针可以方便的操作内存数据.指针的类型标志着这个指针指向数据的类型,有两个作用: 告诉了编译器需要从这个地址开始对**多少字节(n)**的数据进行操 ...

  10. C语言(强制类型转换)

    一.类型转换原则 1.升级:当类型转换出现在表达式时,无论时unsigned还是signed的char和short都会被自动转换成int,如有必要会被转换成unsigned int(如果short与i ...

最新文章

  1. SimpleDateFormat 详解
  2. 微信与服务器通讯失败,linux服务器微擎提示couldn’t resolve host api.weixin.qq.com解决办法...
  3. OPPO高级视觉设计师戴润达:视觉设计师需要思考的11件事
  4. [Java] super关键字:引用父类成员
  5. c++类与类的聚合(Aggregation)关系
  6. Apache Flink 零基础入门(十二)Flink sink
  7. 【ES6(2015)】解构赋值Desctructuring
  8. Windows下Lua安装环境配置教程
  9. 检测 USB 设备拨插的 C# 类库:USBClassLibrary
  10. 求求你给你的微信头像戴个圣诞帽吧!
  11. Unity3D之UGUI基础2:Text文本
  12. Centos7下安装小米SQL优化工具SOAR
  13. MYSQL—— 基础入门,select 查询涉及到的关键字组合详解(进阶篇)
  14. 从零开始学算法 - 快速排序
  15. vivado实现cameralink接口
  16. 连接服务器框架协议通信,通信服务协议范本3篇.doc
  17. 苹果Mac电脑文件夹路径怎么看?“访达”也能显示文件路径
  18. 「文章重现」2019发表在NBT的10x sc-ATAC-seq分析重现
  19. 人在外省想在老家装监控,在手机上能看,要什么条件和材料?
  20. C#开发WPS插件入门

热门文章

  1. 27-物流管理系统数据库-车队信息数据操作
  2. 笔记本电脑连蓝牙音箱放音乐音质很差 解决办法
  3. 客运站管理系统—比较复杂的查询-查询线路
  4. 强大的JQuery表单验证插件 FormValidator使用介绍
  5. 信息安全第四章 密码学
  6. 吴晓波跨年演讲:2019,这6件事将会发生(演讲全文)
  7. 逆向工程日记2--WINDOWS优化大师
  8. sun.misc.Unsafe类详解
  9. 搞笑夫妻对抗:对老婆的十七种亲密称呼
  10. android 7.0权限组,huawei p9 plus(VIE-AL10)Android7.0/EMUI5.0更新动态交流