admin管理员组文章数量:1794759
C语言数据类型转换
文章目录
- 前言
- 一、类型自动转换
- 二、赋值转换
- 三、强制类型转换
前言
C语言中,整型、单精度型、双精度型和字符型数据可以进行混合运算。字符型数据可以得与整型通用。例如:
100+′A′+8. . 65-2456. 75×′a′是一个合法的运算表达式。在进行运算时,不同类型的数据要先转换成同一类型,然后再进行运算。C语言数据类型转换可以归纳成三种转换方式:自动转换,赋值转换和强制转换。
一、类型自动转换在进行运算时,不同类型的数据要转换成同一类型。自动转换的规则如图
转换方法为:
如此等等,总之是由低级向高级型转换。对于图中列出的自动类型转换,不要错误地理解为先将char型或short型转换成int型,再转换成unsigned型,再转换成long型,直至double型。例如,有如下定义:
char ch='a’ int i=13: float x=3.65; double y=7.528e-6;若表达式为
i+ch+x*y则表达式的类型转换是这样进行的:
先将ch转换成int型,计算i+ch,由于ch=‘a’,而‘a’的ASCH码值为97,故计算结果为110,类型为int型。再将x转换成double型,计算x*y,结果为double类型。最后将i+ch的值110转换成double型,表达式的值最后为double类型。
二、赋值转换如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。转换的基本原则如下。
输出结果为:
-1“l= 4294967295 ”赋值给int型变量a,a的值却是-1。这是因为a是有符号数,最高位是符号位,为1表示该数是负数。 无符号整型数4294967295的32位二进制位都是1,而有符号int型-1用32位全1的二进制位表示。
#include<stdio.h> #include<windows.h> #include<math.h> void main(){ char ch='A';//定义字符型变量,并赋初值‘A’ int a,b=3,c;//定义整型变量,并给变量b赋初值3 float x1,x2=2.5;//定义单精度浮点型变量 a=ch;//将字符型变量ch的值'A'赋给整型变量a x1=a; c=x2;//x2的值2.5赋给整型变量c printf("%4c,%4d,%6.2f,%4d\\n", ch,a,x1,c);//输出变量ch、a、x1和c的值getchar(); }输出结果为:
A 65 65.00 2第一个输出数据是字符变量ch的值字符’A’;第二个输出数据是整型变量a的值65,字符’A’的ASCII码转换成32位的整型数据;第三个输出数据是实型变量xl的值65.00,由int型变量a的值65自动转换成float类型;第四个数据是整型变量c的值,由实型变量x2的值2.5自动转换成整型数2。
三、强制类型转换可以利用强制类型转换运算符将一个表达式转换成所需类型。如:
(double)x/*将x转换成double型*/ (int)(a+b)/*强制将a+b的值转换成整型*/ (float)(10%3)/*将10%3的值转换成float型*/强制类型转换的一般形式为: (类型名)(表达式) 例如:
int a=7,b=2; float y1,y2; float y1=a/b;/*y1的值a/b为3.0*/ y2=(float)a/b;/*y2的值为3.5,float将a进行强制转换为实型,b也随之自动转换为实型*/(int)(x+y)和(int)x+y强制类型转换的对象是不同的。(int)(x+y)是对x+y进行强制类型转换;而(int)x+y则只对x进行强制类型转换。
版权声明:本文标题:C语言数据类型转换 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686625678a87839.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论