详解C语言基础的类型转换_第1页
详解C语言基础的类型转换_第2页
详解C语言基础的类型转换_第3页
详解C语言基础的类型转换_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第详解C语言基础的类型转换数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。转换包括隐式类型转换和强制类型转换。

类型转换的原则:占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。

隐式类型转换

隐式转换也称为自动转换,遵循一定的规则,由编译器自动完成。

C的整型算数运算总是至少以缺省整型类型的精度来进行,为了获得这个精度,表达式中的字符和短整形操作数在使用之前都被转换成普通整型,这种转换为整型提升。

整型提升:通用CPU是难以直接实现两个8比特位直接相加运算。所以表达式中各种长度可能小于int长度的整型值,都必须转换为int或者unsignedint,然后才能送入CPU去执行运算。

代码示例1:

intmain()

chara=5,b=126;

//5:00000000000000000000000000000101

//a:00000101(截断操作)

//126:00000000000000000000000001111110

//b:01111110

//当a和b相加时,都是char类型,就会发生整型提升

//intc=00000000000000000000000000000101+00000000000000000000000001111110

//charc=10000011(整型截断)

//以%d打印,再次在内存中整型提升,再打印原码

//intc=11111111111111111111111110000011(补码)

//打印原码:10000000000000000000000011111101

charc=a+b;

printf(%d\n,c);

return0;

如何整型提升:按照变量的数据类型的符号位来提升。

代码示例2:

//负数的整型提升

chars1=-1;

变量s1的二进制补码中只有8个比特位11111111

因为char是有符号的,所以在整型提升的时候,高位补充符号位

即:11111111111111111111111111111111

//正数的整型提升

chars2=1;

变量s2的二进制补码中只有8个比特位00000001

因为char是有符号的,所以在整型提升的时候,高位补充符号位

即:00000000000000000000000000000001

无符号数的整型提升,高位直接补0;

代码示例3:

隐式转换

intmain()

intnum=5;

printf(s1=%d\n,num/2);

printf(s2=%lf\n,num/2.0);

return0;

s2=2.500000

请按任意键继续...

强制类型转换

强制类型转换指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型

代码示例1:

#includestdio.h

intmain()

floatx=0;

inti=0;

x=3.6f;

i=x;//x为实型,i为整型,直接赋值会有警告

i=(int)x;//使用强制类型转换

printf(x=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论