C语言数据类型转换
数据类型转换就是将数据(变量、表达式的结果)从一种类型转换到另一种类型。那么大家知道C语言数据类型转换是怎样的呢?下面一起来看看!
例如,为了保存小数你可以将int类型的变量转换为double类型。
数据类型转换的一般格式为:
(type_name) expression
type_name为要转换到的数据类型,expression为表达式。例如:
(float) a; //把a转换为实型(int)(x+y); //把x+y的结果转换为整型(float) 100; //将一个常量转换为实型
【示例】将整数转换为浮点数:
#include int main(){ int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f", mean); return 0;}
运行结果:
Value of mean : 3.400000
需要注意的是,类型转换运算符( )的优先级高于/,(double) sum / count会先将 sum 转换为 double 类型,然后再进行除法运算。如果写作(double) (sum / count),那么运行结果就是 3.000000。
这种由程序员显式进行的转换称为强制类型转换。除了强制类型转换,在不同数据类型的混合运算中编译器也会隐式地进行数据类型转换,称为自动类型转换。
自动类型转换遵循下面的规则:
若参与运算的数据类型不同,则先转换成同一类型,然后进行运算。
转换按数据长度增加的`方向进行,以保证精度不降低。例如int型和long型运算时,先把int量转成long型后再进行运算。
所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
char型和short型参与运算时,必须先转换成int型。
在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。
下图表示了类型自动转换的规则:
【示例】自动数据类型转换。
#includeint main(){ float PI=3.14159; int s1, r=5; double s2; s1 = r*r*PI; s2 = r*r*PI; printf("s1=%d, s2=%f", s1, s2); return 0;}
运行结果:
s1=78, s2=78.539753
在计算表达式r*r*PI时,r 和 PI 都转换成double类型,表达式的结果也为double类型。但由于 s1 为整型,所以赋值运算的结果仍为整型,舍去了小数部分。
注意是将小数部分直接丢掉,而不是按照四舍五入向前舍入。
无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。请看下面的例子:
#includeint main(){ float f=5.75; printf("(int)f=%d, f=%f",(int)f, f); return 0;}
运行结果:
(int)f=5, f=5.750000
-
C语言数组的定义及引用
引导语:数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。以下是本站小编分享给大家的C语言数组,希望大家喜欢!1.1一维数组的定义、初始化和引用1.一维数组的定义方式为:类型说明符数组名[常量表达式](1)数组名的命名方法...
-
在VS下如何运行C语言程序
微软后来对VC6.0进行了升级,并更名为VisualStudio(简称VS),支持更多的编程语言,更加强大的功能,不过VisualStudio文件很大,有2~3G左右,大部分功能初学者暂时不会用到;而且安装繁琐,需要将近半个小时的时间,也不容易卸载干净。VisualStudio还有一个缺点是占用资源较多,不...
-
计算机c语言基础知识
C语言程序设计是高效计算机专业学生必修的一门基础课程,那么你对计算机c语言了解多少呢?下面是小编整理的计算机c语言基础知识,欢迎大家阅读参考。计算机c语言的特性C语言是世界上最流行、使用最广泛的高级程序设计语言之一。在操作系统和系统使用程序以及需要对...
-
2017年计算机二级考试C语言备考题及答案
计算机二级对于很多考生来说还是比较有难度的,那么怎样顺利通过二级考试呢?这就需要大家平时多练习和找方法了。以下是本站小编整理的2017年计算机二级考试C语言备考题及答案,希望对大家有帮助!1.(A)是构成C语言程序的基本单位。A、函数B、过程C、子程序D、子例...