標(biāo)題: C語(yǔ)言數(shù)據(jù)類(lèi)型及強(qiáng)制轉(zhuǎn)換(待補(bǔ)充) [打印本頁(yè)]

作者: 51黑黑黑    時(shí)間: 2016-2-12 19:18
標(biāo)題: C語(yǔ)言數(shù)據(jù)類(lèi)型及強(qiáng)制轉(zhuǎn)換(待補(bǔ)充)
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ù)類(lèi)型,在IAR編譯器中,char默認(rèn)的是unsignedchar,這點(diǎn)要注意,下例說(shuō)明這個(gè)問(wèn)題:
例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)制類(lèi)型轉(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型,故不存在溢出的問(wèn)題








歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1