有如下程序段#include "stdio.h"typedef union{ long x[2]; int y[4]; char z[8];}atx;typed
有如下程序段#include "stdio.h"typedef union{ long x[2]; int y[4]; char z[8];}atx;typedef struct aa { long x[2]; int y[4]; char z[8];} stx;main(){ printf("union=%d,struct aa=%d\n",sizeof(atx),sizeof(stx));}則程序執(zhí)行后輸出的結(jié)果是A.union=8,struct aa=8 B.union=8,struct aa=24C.union=24,struct aa=8 D.union=24,struct aa=24
正確答案:B本題主要考查結(jié)構(gòu)體和聯(lián)合體所占的存儲空間。在本題程序中,首先定義了一個聯(lián)合體,聯(lián)合體中具有三個成員,它們的類型分別為長整型、整型和字符型。按照C語言的規(guī)定,這三種類型的變量所占的存儲空間分別為4個字節(jié)、2個字節(jié)和1個字節(jié)。但由于定義的成員都是數(shù)組,長整型數(shù)組的大小為2,那么需要的總空間為8個字節(jié);整型數(shù)組的大小為4,那么需要的總空間為8個字節(jié);字符數(shù)組的大小為8,需要的總空間也為8個字節(jié),因此,可以看出三個成員需要的存儲空間一樣,都為8。根據(jù)聯(lián)合體變量中的所有成員共享存儲空間,聯(lián)合變量的長度等于各成員中
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。