实质上,C语言的简单类型只有两种:各种浮点型和各种整数型。在C语言中各种类型的数据进行混合运算时遵循一个隐式转换规则进行自动的类型转换,除此,C语言还提供了强制类型转换运算。
1.隐式转换规则
(1)单目运算
1.所有浮点类型不转换
2.长度大于int类型的整数类型不转换
3.长度小于int类型的带符号整数类型转换成int类型
4.长度小于int类型的无符号整数类型
a.值可以用int类型表示,转化成int类型
b.值不能用int类型表示,转化成unsigned int类型
(2)双目运算符和三目运算符
向类型高的运算分量转换,把短类型转换成长类型,把整数类型转换成浮点类型,把有符号类型转换成无符号类型。
2.强制类型转换
强制类型转换是C语言的一元运算,优先级为14,它的格式为:
(类型名)
3,赋值转换
例 v=e
它所执行的动作如下:
(1)计算赋值运算符右端表达式e的值
(2)把e的值按赋值转换规则转换成赋值运算左端v的值
(3)把转换后的值送入v中
(4)表达式v=e的值为最后送入v中的值
其中赋值转化规则如下
v(整数类型)=e(整数类型):
适应v的长度,按照补码的方式直接转换e的值为v类型,若v的长度>e的长度,则e扩展到v的长度,若v的长度<e的长度,则从e的尾部截取合适长度的数据,并保持数值e的符号送入v中
v(整数类型)=e(浮点类型):
把e的值截尾取整,转换成整数类型,再按照v和e都是整数类型的规则进行转换
v(浮点类型)=e(整数类型):
把e的值直接转换成v的浮点类型,送入v中
v(浮点类型)=e(浮点类型)
适应c的长度(精度),把e的值转换成v的类型