C学习笔记(三) 数据类型分类及类型转换

数据类型的基本知识点

数据类型的分类


类型转换

1.      隐式类型转换

隐式类型转换分为算术转换,赋值转换,输出转换

(1)算术转换进行算术运算(加、减、乘、除、取余以及符号运算)时,不同类型数必须转换成同一类型的数据才能运算,算术转换原则为:

 

    在进行运算时,以表达式中最长类型为主,将其他类型位据均转换成该类型,如:若运算数中有double型或float型,则其他类型数据均转换成double类型进行运算。

    特别注意的是有符号和无符号之间的转换

    包含longunsigned int,32位机器上都是4字节,所以均转换为unsigned long.

    包含signedunsigned intsigned会转换为unsigned如果int恰好为负数,其结果为对unsigned取值个数求模的结果。比如将-1赋给8位的unsigned char,呢么结果就是255-1256取模后的值)。unsigned char取值范围0~255

注意:在进行自动类型转换的时候,如果原来的数是无符号数,那么在扩展的时候,高位填充的是0;如果是有符号数,那么高位填充的时符号位!

(2)赋值转换

进行赋值操作时,赋值运算符右边的数据类型必须转换成赋值号左边的类型,若右边的数据类型的长度大于左边,则要进行截断或舍入操作。

(3)输出转换

  在程序中将数据用printf函数以指定格式输出时,当要输出的数据类型与输出格式不符时,便自动进行类型转换,如一个long型数据用整型格式(%d)输出时,则相当于将long型转换成整型(int)数据输出;一个字符(char)型数据用整型格式输出时,相当于将char型转换成int型输出。

注意:较长型数据转换成短型数据输出时,其值不能超出短型数据允许的值范围,否则 转换时将出错。

2.      强制类型转换

当数据类型不兼容时,为避免发生错误,需要进行强制类型转换

int num = 5;
int *p = &num
char *ptr = (char *)p;





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值