c语言之间数据类型的转换,C语言数据类型之间的转换

类型转换

在 C 语言程序中,经常需要对不同类型的数据进行运算,为了解决数据类型不一致的问题,需要对数据的类型进行转换。例如一个浮点数和一个整数相加,必须先将两个数转换成同一类型。C 语言程序中的类型转换可分为隐式和强制类型转换两种。

67ca19e98e3f73560300425731a68d37.png

隐式类型转换

所谓隐式类型转换指的是,系统自动将取值范围小的数据类型转换为数据取值范围大的数据类型,它是由系统自动转换完成的。例如,将 int 类型和 double类型的数据相加,系统会将 int类型的数据转换为 double 类型的数据,再进行相加操作,具体示例如下:

int num1=12;

double num2=10.5;

num1+num2;

上述示例代码中,由于 double 类型的取值范围大于 int 类型,因此,将 int类型的 num1 与 double 类型的 num2相加时,系统会自动将 num1的数据类型由 int转换为 double类型,从而保证数据的精度不会丢失。

强制类型转换

所谓强制类型转换指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型,其基本语法格式如下所示:

(类型名)(表达式)

在上述格式中,类型名和表达式都需要用括号括起来,具体示例如下:

f573bee5920bd1090e2f8157d50d0196.png

上述讲解的两种类型转换,看起来简单,但在使用时需要注意以下几个细节:

(1)浮点型与整型

将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分,只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式,即小数点后带若干个 0 。需要注意的是,赋值时的类型转换实际上是强制的。

(2)单、双精度浮点型

由于 C 语言中的浮点值总是用双精度表示的,所以 float 型数据参与运算时只需要在尾部加 0 延长为 double 型数据。double 型数据转换为 float 型时,会造成数据精度丢失,有效位以外的数据将会进行四舍五入。

(3)char型与 int型

将 int 型数值赋给 char 型变量时,只保留其最低 8 位,高位部分舍弃。将char 型数值赋给 int 型变量时, 一些编译程序不管其值大小都作正数处理,而另一些编译程序在转换时会根据 char 型数据值的大小进行判断,若值大于127,就作为负数处理。对于使用者来讲,如果原来 char 型数据取正值,转换后仍为正值。如果原来 char 型值可正可负,则转换后也仍然保持原值,只是数据的内部表示形式有所不同。

(4)int型与 long型

long 型数据赋给 int 型变量时,将低 16 位值送给 int 型变量,而将高 16 位截断舍弃。(这里假定 int型占两个字节)。 将 int型数据送给 long型变量时,其外部值保持不变,而内部形式有所改变。

(5)无符号整数

将一个 unsigned 型数据赋给一个长度相同的整型变量时(如:unsigned→int、unsigned long→long, unsigned short→short) ,内部的存储方式不变,但外部值却可能改变。将一个非 unsigned整型数据赋给一个长度相同的 unsigned 型变量时, 内部存储形式不变,但外部表示时总是无符号的。

求关注,求转发,求支持!

想要学习的童鞋可以加群:564950050

同时关注我们的微信公众号:【轻松学C语言】

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值