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)。