一、算术转换
如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数转换为另一个操作数的类型,否则操作就无法进行。下面的层次体系称为寻常算数转换。
long double
double
float
unsigned long int
long int
unsigned int
int
如果某个操作数的类型在上面的列表中排名靠后,那么首先要转换为另一个靠前的操作数的类型后执行运算。
【注意】:算术转换要合理,不然会存在一些潜在的问题。
示例一
int main()
{
int a = 4;
float f = 4.5f;
a + f;
return 0;
}
要计算 a + f
就必须要先把 a 由int
类型转换为float
类型,然后再计算 a + f 。
注意:unsigned不要和有符号型混用
二、操作符的属性
复杂表达式的求值有三个影响的因素。
1、 操作符的优先级;
2、操作符的结合性;
3、是否控制求值顺序。
两个相邻的操作符先执行哪个,取决于他们的优先级;
若两者优先级相同,取决于他们的结合性。
int main()
{
int a = 4;