C语言基础:强制类型转换
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语言基础:强制类型转换相关推荐
- c语言运算符类型转换,C语言中强制类型转换运算符的独特作用
C语言中强制类型转换运算符的独特作用 在C语言中有一个强制类型转换运算符,它为C语言中的数据类型转换带来 (本文共2页) 阅读全文>> 在进行C++类的设计时,我们常常需要为类对象设计运算 ...
- c语言不通类型指针转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...
- C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...
- c语言学习--强制类型转换
C语言中关于强制类型转换问题 由于朋友问到,所以整理了一份,若关于一些认识有错误还望指出...... ● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再 ...
- C语言:强制类型转换、自动类型转换
C语言中类型转换有两种方式:即强制类型转换和自动类型转换. 一.强制转换比较简单,为:(类型)操作对象. int n1 = 5, n2 = 2; float f1 = (float) 5 / 2; / ...
- c语言字符串强制类型转换,C语言学习九 —头文件强制类型转换错误处理
预处理器 C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤.简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理.我们将把 C 预处理器( ...
- C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)
强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...
- C语言指针强制类型转换
概要: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给 ...
- c语言指针强制类型转换的应用
指针类型简介 c语言中,指针是就是内存地址,因此使用指针可以方便的操作内存数据.指针的类型标志着这个指针指向数据的类型,有两个作用: 告诉了编译器需要从这个地址开始对**多少字节(n)**的数据进行操 ...
- C语言(强制类型转换)
一.类型转换原则 1.升级:当类型转换出现在表达式时,无论时unsigned还是signed的char和short都会被自动转换成int,如有必要会被转换成unsigned int(如果short与i ...
最新文章
- SimpleDateFormat 详解
- 微信与服务器通讯失败,linux服务器微擎提示couldn’t resolve host api.weixin.qq.com解决办法...
- OPPO高级视觉设计师戴润达:视觉设计师需要思考的11件事
- [Java] super关键字:引用父类成员
- c++类与类的聚合(Aggregation)关系
- Apache Flink 零基础入门(十二)Flink sink
- 【ES6(2015)】解构赋值Desctructuring
- Windows下Lua安装环境配置教程
- 检测 USB 设备拨插的 C# 类库:USBClassLibrary
- 求求你给你的微信头像戴个圣诞帽吧!
- Unity3D之UGUI基础2:Text文本
- Centos7下安装小米SQL优化工具SOAR
- MYSQL—— 基础入门,select 查询涉及到的关键字组合详解(进阶篇)
- 从零开始学算法 - 快速排序
- vivado实现cameralink接口
- 连接服务器框架协议通信,通信服务协议范本3篇.doc
- 苹果Mac电脑文件夹路径怎么看?“访达”也能显示文件路径
- 「文章重现」2019发表在NBT的10x sc-ATAC-seq分析重现
- 人在外省想在老家装监控,在手机上能看,要什么条件和材料?
- C#开发WPS插件入门
热门文章
- 27-物流管理系统数据库-车队信息数据操作
- 笔记本电脑连蓝牙音箱放音乐音质很差 解决办法
- 客运站管理系统—比较复杂的查询-查询线路
- 强大的JQuery表单验证插件 FormValidator使用介绍
- 信息安全第四章 密码学
- 吴晓波跨年演讲:2019,这6件事将会发生(演讲全文)
- 逆向工程日记2--WINDOWS优化大师
- sun.misc.Unsafe类详解
- 搞笑夫妻对抗:对老婆的十七种亲密称呼
- android 7.0权限组,huawei p9 plus(VIE-AL10)Android7.0/EMUI5.0更新动态交流