unsigned int 与 int相加:
unsigned int val = 100;
if (val - 150 > 0)
printf("result is : unsigned int\n");
else
printf("result is : int\n");
//结果:result is : unsigned int
结果:
value is 4294967246.
所以 unsigned int与int作运算时,int会自动转化为unsigned int类型。
如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算
由此引申到double和long long,
double dd = 100.0;
long long ll = 50;
qDebug() << "type name is " << typeid (dd - ll).name();
//结果:type name is double
转换规则如下图所示。
1.短字节的向长字节转:
double高 ← float ,long低
int 高 ← char, short 低
2.相同字节长度的,
有符号向无符号转:
unsigned int ← int低
unsigned int ← long低
整型向浮点型转:
double高 ← long long低
float高 ← int 低