在C的运算中以下四种情况会发生数据类型的隐式转换:
1、算术运算式中,低类型能够转换为高类型。
2、赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给他。
3、函数调用中参数传递时,系统隐式地将实参转换为形参的类型后,赋给形参。
4、函数有返回值时,系统将隐式地将返回表达式类型转换为返回值类型,赋值给调用函数。
转换规则:
当不同类型的数据进行操作时,首先将其转换成相同的数据类型,然后进行操作,转换规则是由低级向高级转换。
转换规则如下图所示:
举例:
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned int a=6;
int b=-20;
(a+b>6)? puts("result is \'>6\'"):puts("result is \'<=6\'");
return 0;
}
输出结果为 “the result is '>6' ”;
在运算过程中,int 类型的b先转换成unsigned int,将会变成很大的一个数,所以 a+b会变成很大的一个unsigned int类型的数,故输出结果为“the result is '>6' ”
更多请参考