【C语言】-变量之间的类型转换

来源:互联网 发布:一搜网络 编辑:程序博客网 时间:2024/05/17 23:25

我们知道,在C语言中,数值类型可以分为两大类:整型和浮点型

整型变量包括:短整型short 、整型int 、长整型long.

浮点型变量包括:单精度型 float 、双精度型 double 


整型变量:一般占4个字节(32位),最高位代表符号位,0表示正数、1表示负数,取值范围是-2147483648~2147483647。

浮点型变量:也称为实型变量,单精度一般占4字节(32位),双精度一般占8字节(64位)。


      数据自动转换顺序表

      高        double    ←←    float
       ↑          ↑             
       ↑         long     
       ↑          ↑
       ↑        unsigned
       ↑          ↑
       低         int
      ←←    char,short


自动类型转换:当运算符两边的数值类型不同时,其中一个数的要经过转换,转换成和另外一个数类型相同时,才能进行计算。数值转换的原则是就高不就低,即级别低的数先转化成和级别高的数类型一致时,才能进行计算。所得结果的数据类型和级别高的数据类型一致。

强制类型转化运算符:

利用强制类型转化运算符,将一个表达式转化为所需类型。

(double)a //将a转化成double类型(int)(x+y) //将 x+y 的值转化为int型(float)(5%3)//将 5%3 转化为 float 型

下面,我们引进一个小案例,看看整型和浮点型之间的转换

#include <STDIO.H>#include <STDLIB.H>void main(){int a=1;int b=2;int x;double y,z,w;x=a/b;y=double(a/b);z=double(a)/double(b);w=z+a;printf("x=%d,y=%f,z=%f,w=%f,\n",x,y,z,w);system("pause");}
运行结果如下:


在本例中,我们设a=1,b=2,且a、b均为整型。我们知道,1/2 = 0.5,但在程序中受数值类型的影响,1/2的值却不一定为 0.5,。

x = a/b,因为x为整型变量,所以a/b 即取模,最后x为0。

y = double(a/b),因为y为浮点型变量,a/b取模后为0,化为浮点型后为 0.000000。

z = double (a) / double (b)  ,先将a转化为浮点型 1.000000,再将b转为2.000000,所以z最终也为浮点型 0.500000。

w = a+z,虽然a是整型,z是浮点型,就高不就低,w最后也为浮点型,w为1.500000




0 0
原创粉丝点击