数据类型级别从高到低为:
数据类型 | 等级 |
---|---|
long double | 高 |
double | |
float | |
unsigned long long | |
long long | |
unsigned long | |
long | |
unsigned int | |
int | 低 |
注1: short 和 char 类型在类型转换时会被自动转换为 int ,如有必要会被转换成 unsigned int (如果 short 和 int 的大小相同, unsigned short 就比 int 大。这种情况下, unsigned short 会被转换成 unsigned int)。
注2: 将一种类型转换成更高级别的类型称为“升级”;将一种类型转换成更低级别的类型称为“降级”。
**注3:**上表中例外情况为:当 long 和 int 的大小相同时, unsigned int 比 long 的级别高。
待赋值的值与与目标类型不匹配时,规则如下:
-
目标类型是无符号整型, 且待赋值的数是整数时, 额外的位将被忽略。
例如:假设类型A为8位数,类型B为4位数,将A类型的数据转换为B类型的数据,则转换后的结果为0110.
-
如果目标类型是一个有符号整型, 且待赋值的值是整数,结果因实现而异。
-
如果目标类型是一个整型,且待赋的值是浮点数,该行为是未定义的。(浮点类型降级为整型时,原来的浮点值会被截断)
强制类型转换
int m = (int)3.6 - (int)1.2; //m 的值为 3 - 1 = 2.