C语言中的数据类型和隐式转换

来源:互联网 发布:java序列化 编辑:程序博客网 时间:2024/06/10 23:54

       为什么在用计算机运算时,要指定数据的类型呢?在计算机中,数据是存放在存储单元中的,它具体存在的,而且,存储单元是由有限字节构成的,每一个存储单元中存放数据的范围是有限的。

       所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的类型分配不同的长度和存储形式。

       其中基本类型(包括整形和浮点型)和枚举类型变量的值都是数值,统称为算数类型。算数类型和指针类型统称为纯量类型。数组类型和结构体类型统称为组合类型,共用体类型不属于组合类型,因为在同一个时间内只有一个成员具有值。函数类型用来定义函数,描述一个函数的接口,包括函数返回值的数据类型和参数的类型。


      所谓隐式类型转换就是在编译时由编译程序按照一定规则自动完成,而不需人为干预。因此,在表达式中如果有不同类型的数据参与同一运算时,编译器就在编译时自动按照规定的规则将其转换为相同的数据类型。 C语言规定的转换规则是由低级向高级转换,由表示范围小向表示范围大的转换。具体如下:

bool    

char     ——>     int  ——>unsigned int ——>    float——>   double

short

    需要注意的是,bool、char和short均转换为int型,float均转换成double型进行运算。