|
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默認(rèn)的是unsignedchar,這點(diǎn)要注意,下例說明這個(gè)問題:
例1:
char a=5,b=6,c=0;
c=a-b;
結(jié)果c=255,顯然c是unsigned char,于是將char換成signed char,得到結(jié)果為-1;
例2:(強(qiáng)制類型轉(zhuǎn)換)
u16 a=30000,b=50000,c=10000;
u32 d=0;
d=a+b+c;
結(jié)果24464,因?yàn)閡nsignedchar最大值65535,a+b+c超出了65535,所以90000-65536=24464;
改為d=(u32)a+(u32)b+(u32)c,結(jié)果90000,由于強(qiáng)制將每個(gè)u16型轉(zhuǎn)化為u32型,故不存在溢出的問題
|
|