C语言编程经常存在计算时隐藏类型转换问题,下面是转换规则:
高 double ←← float
↑ ↑
↑ long
↑ ↑
↑ unsigned int
↑ ↑
低 int ←← char,short int,enum
有小题目如下:
int a = -1;
unsigned int b = 2;
short c = -1;
unsigned short d = 2;
比较a和b,a和d,c和d的大小。
答案:a > b , a < d, c < d
第一个,int会被转换成unsinged int;
第二个,unsignedshort会被转换成int;
第三个,short和unsigned short都会被提升成int;
signed char a = -128, b = -126
1、signedchar c = (a+b)/2=-127
2、signedchar d = (signed char)(a+b)/2=1
2计算是a和b隐藏转换为int计算,后备显示转换为(signedchar)。