C语言类型转换

在程序中,经常需要对不同类型的数据进行运算,不同类型的数据在运算之前应该先经过类型转换,将两个数转换成同一种类型
C语言中,类型转换分为隐式转换、强制类型转换两种

隐式类型转换

是指系统自动将取值范围小的数据类型,转换为数据取值范围大的数据类型,它是由系统自动转换完成的
比如,将int类型和double类型的数据相加,系统会自动把int类型的数据,转换为double类型的数据,再进行相加操作
示例代码

int num1=12;
double num2=10.5;
num1+num2;

由于,double类型的取值范围大于int类型,因此,在相加时,系统自动将num1的数据类型转换为double类型,从而保证数据的精度不会丢失

强制类型转换

是指使用强制类型转换运算符,将一个变量或者表达式,转换成所需的类型
基本语法
(类型名) (表达式)
注意,类型名和表达式,都需要使用括号括起来
示例代码

double x;
int y;
// 将变量x的值,转换成int之后,再与y相加
(int)x+y;
// 将表达式x+y的值,转换成double类型
(double)((int)x+y);

浮点型与整型

浮点型转换为整型时,舍弃浮点数的小数部分,只保留整数部分
整型赋值给浮点型变量时,数值不变,只将形式改为浮点形式,即小数点后带若干个0
注意,赋值时进行的类型转换,为强制类型转换

单、双精度浮点型

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

char型与int型

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

int型与long型

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

无符号整数

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值