C语言中类型自动转换
时间:2010-10-13 来源:一夜北风紧
看下面一个程度:
int main()
{
unsigned int a = 10;
unsigned char m = 1;
int b = -12;
float c = -12;
int d, e, f;
d = (a > b)?1:0;
e = (a > c)?1:0;
f = (m > b)?1:0;
return 0;
}
运行后 d = 0; e = 1;f = 1;
原因:
当语句中有signed int 与unsinged int 时,signed int 转换成unsigned int, 那么b 是一个很大的数,故b > a;
但当有float double这样的类型时,它不进行转换,因而c 还是-12,故a > c;
对于unsigned char 型 与singed 型一起时,signed 不进行转换。
相关阅读 更多 +