资源描述:
《c语言中各种数据类型长度》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、下面是我关于C语言中各种数据类型长度的总结:(参考TheCProgrammingLanguage)1.c语言中的整数类型有char,short,int,long等几种,下面是C语言对每种数据类型长度的规定:(a).short和long类型的长度不相同(b).int类型通常同具体机器的物理字长相同(c).short通常是16bits,int通常是16bitsor32bits每种编译器可以根据硬件的不同自由确定,但是short和int必须最少是16bits,而long类型必须最少是32bits,并且short必须
2、比int和long类型要短。2.sizeof()运算符返回的是一种数据类型中所包含的字节数(bytes),AnsiC规定sizeof(char)必须返回1,当sizeof作用于数组时,返回的是数组中所有成员所占的字节数(注意并不是数组中成员的个数),当sizeof()作用于结构体和公用体时,返回的不仅仅是数据成员总的字节数,还包括编译器为了实现字节对其而填充的那些字节。以前写程序也隐隐约约的懂得这些规则,但是一直以为char类型必须是8bits的,但是最近做了一个嵌入式DSP项目,编译器手册上明明写着char
3、类型就是16bits的,无奈翻出"TheCProgrammingLanguage"一查才发现ANSIC对于char类型的长度并没有作硬性规定。以前写程序不太注意数据类型的可移植性,这次项目中用到的以前的代码都要重新检查数据类型长度的问题。CDatatypes.VariabledefinitionChasaconceptof'datatypes'whichareusedtodefineavariablebeforeitsuse.Thedefinitionofavariablewillassignstoragef
4、orthevariableanddefinethetypeofdatathatwillbeheldinthelocation.Sowhatdatatypesareavailable?intfloatdoublecharvoidenumPleasenotethatthereisnotabooleandatatype.Cdoesnothavethetraditionalviewaboutlogicalcomparison,butthatsanotherstory.RecentC++compilersdohavea
5、booleandatatype.int-datatypeintisusedtodefineintegernumbers.{intCount;Count=5;}float-datatypefloatisusedtodefinefloatingpointnumbers.{floatMiles;Miles=5.6;}double-datatypedoubleisusedtodefineBIGfloatingpointnumbers.Itreservestwicethestorageforthenumber.OnPC
6、sthisislikelytobe8bytes.{doubleAtoms;Atoms=2500000;}char-datatypechardefinescharacters.{charLetter;Letter='x';}ModifiersThethreedatatypesabovehavethefollowingmodifiers.·short·long·signed·unsignedThemodifiersdefinetheamountofstorageallocatedtothevariable.The
7、amountofstorageallocatedisnotcastinstone.ANSIhasthefollowingrules:shortint<=int<=longintfloat<=double<=longdoubleWhatthismeansisthata'shortint'shouldassignlessthanorthesameamountofstorageasan'int'andthe'int'shouldbelessorthesamebytesthana'longint'.Whatthism
8、eansintherealworldis:TypeBytesBitsRangeshortint216-32,768->+32,767(32kb)unsignedshortint2160->+65,535(64Kb)unsignedint4320->+4,294,967,295(4Gb)int432-2,147,483,648->+2,147,483,647(2Gb)longint432-2,147,