【揭秘】C语言类型转换时发生了什么?
2021-04-13 09:27
标签:mamicode point 临时 变量 来源 数据运算 就是 怎么 alt ID:技术让梦想更伟大 在C语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统,我们常用的算术类型包括两种类型:整数类型和浮点类型。那么相互之间具体是怎么转化的呢? 不同数据类型的存储大小和值范围是不一样的,程序在初始化的时候就已经设定了,例如: a,b占的字节大小不一样,这个我们应该都知道,在C语言中一个表达式允许不同类型的数据进行运算,例如: 因为计算机硬件在进行算术操作时,要求各操作数的类型具有相同的存储位数以及一样的存储方式,所以就出现了类型转换。 对于某些类型的转换,编译器可以隐式地自动进行,这种转换称为自动类型转换; 而有些类型转换需要程序员显式指明,那么通常把这种转换称为强制类型转换。 自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型到另一类的转换。我们先来看一段代码 由于指针变量和整型、浮点这些数据型的类型是不能相互赋值的,编译报错输出: 那么我们把同类型数据类型进行运算后赋值呢? 如下图所示: 同类型运算中: 那么我们把不同类型数据类型进行运算后赋值呢? 结果如下图所示: 可以得出在不同类型运算中: 我们得到结论如图: 整型类型级别从低到高依次为: 浮点型级别从低到高依次为: 自动转换规则: 强制类型转换是通过类型转换运算来实现的。其一般形式为: 其作用就是把表达式的运算结果强制转换成类型说明符所表示的类型的值。 运行结果如下: 我们从中可以看到,虽然x,y变强制转换int型,但是最后输出的值不变,强制类型转换没有影响x和y变量原本的类型。而上图警告已经说明了一切。 注意:在C语言中,对一个变量赋值的时候,这个变量初始定义的类型包含了两层含义: 进行强制类型转换后,内存空间里面的内容是不会发生改变的,改变的是运算时的临时数据对象的类型,是你去读取这个内存空间时的解析方法。所以,一定要对这个数据类型的内存空间和解析方式有一个清晰的认知。 【揭秘】C语言类型转换时发生了什么? 标签:mamicode point 临时 变量 来源 数据运算 就是 怎么 alt 原文地址:https://www.cnblogs.com/lihuidashen/p/13344319.html
作者:李肖遥
链接:https://mp.weixin.qq.com/s/ZFf3imVaJgeesuhl1Kn9sQ了解一下类型转换
int a = 9;
float b = 8.5;
int a = 9;
float b = 8.5,c;
c = a + b;
自动类型转换
//vs2019
//来源:技术让梦想更伟大
//作者:李肖遥
#include
//vs2019
//来源:技术让梦想更伟大
//作者:李肖遥
#include
//vs2019
//来源:技术让梦想更伟大
//作者:李肖遥
#include
int -> unsigned int -> long -> unsigned long -> long long -> unsigned long long
float -> double
强制类型转换
(类型说明符) (表达式)
//vs2019
//来源:技术让梦想更伟大
//作者:李肖遥
#include
总结强调一点
上一篇:用C++基础语句写一个五子棋游戏
下一篇:java 获取传入值的区间
文章标题:【揭秘】C语言类型转换时发生了什么?
文章链接:http://soscw.com/index.php/essay/75127.html