|
typedef signed char s8;
typedef unsigned char u8 ;
typedef signed int s16;
typedef unsigned int u16;
typedef signed long s32;
typedef unsigned long u32;
以上列出了常用的數(shù)據(jù)類型,在IAR編譯器中,char默認的是unsignedchar,這點要注意,下例說明這個問題:
例1:
char a=5,b=6,c=0;
c=a-b;
結果c=255,顯然c是unsigned char,于是將char換成signed char,得到結果為-1;
例2:(強制類型轉換)
u16 a=30000,b=50000,c=10000;
u32 d=0;
d=a+b+c;
結果24464,因為unsignedchar最大值65535,a+b+c超出了65535,所以90000-65536=24464;
改為d=(u32)a+(u32)b+(u32)c,結果90000,由于強制將每個u16型轉化為u32型,故不存在溢出的問題
|
|