java枚舉詳解 C語(yǔ)言中如何控制枚舉類型占用空間的大?。?/h1>
C語(yǔ)言中如何控制枚舉類型占用空間的大???標(biāo)準(zhǔn)C沒(méi)有指定枚舉類型占用的空間大小。它只說(shuō)“枚舉類型的大小是可以容納最大枚舉數(shù)的值的整數(shù)的大小”。同時(shí)還規(guī)定了“枚舉類型中枚舉數(shù)的值必須用int類型表示”,即
C語(yǔ)言中如何控制枚舉類型占用空間的大小?
標(biāo)準(zhǔn)C沒(méi)有指定枚舉類型占用的空間大小。它只說(shuō)“枚舉類型的大小是可以容納最大枚舉數(shù)的值的整數(shù)的大小”。同時(shí)還規(guī)定了“枚舉類型中枚舉數(shù)的值必須用int類型表示”,即枚舉類型的大小不能超過(guò)int類型Inch的大小,但必須與int類型的大小相同嗎?上面的標(biāo)準(zhǔn)已經(jīng)非常明確,只要整數(shù)能容納最大枚舉數(shù)的值,就可以是char,short和int不同的C編譯器對(duì)枚舉類型的大小定義不同,但是程序員不能認(rèn)為修改枚舉類型會(huì)占用空間。
編寫(xiě)代碼求C語(yǔ)言中枚舉類型所占的內(nèi)存長(zhǎng)(用sizeof)?
枚舉類型,在C語(yǔ)言中查找sizeof,可以先定義一個(gè)枚舉類型,然后計(jì)算枚舉類型中的元素或類型的大小來(lái)獲得內(nèi)存長(zhǎng)度。
代碼如下
#include
enum test
{
Test0,
test1,
test2
}
]int main()
{
printf(“測(cè)試大小”為%dn“,sizeof(test))//按類型查找大小。
Printf(“size of test”為%dn“,sizeof(test1))//查找元素的大小。
Return 0
}對(duì)于枚舉類型,是否有負(fù)值將根據(jù)無(wú)符號(hào)int或int來(lái)處理,但是否有符號(hào)不會(huì)影響int的占用空間,因此在平臺(tái)實(shí)現(xiàn)中,任何枚舉類型或枚舉變量都會(huì)占用與int類型相同的空間。對(duì)于主流32位/64位平臺(tái),枚舉類型占4字節(jié)。結(jié)果的大小是4。