c程序設(shè)計(jì)共同體
#include<stdio.h>main(){int j;union{int a;long b;char c;}m;m.b=OX12345678;printf("%x,%x",m.a,m.c);}提問(wèn):為什么m.c最后輸出是78也就是倒過(guò)來(lái)的 我一開(kāi)始以為是12,,如果可以的話麻煩講一下整個(gè)題目的過(guò)程拜托了
這個(gè)涉及到大端字節(jié)序(Big Endian),、小端字節(jié)序(Little Endian),具體的與編譯器及CPU有關(guān)
因?yàn)槟阌玫碾娔X是X86/X64結(jié)構(gòu)的(intel或ADM的CPU),,它的存儲(chǔ)用的是小端字節(jié)序,,也就是高位在前
0X12345678
實(shí)際的內(nèi)存為(十六進(jìn)制)
78 56 34 12
而union是左對(duì)齊的,,所以結(jié)果是
78
Tags:共同體程序設(shè)計(jì)
相關(guān)推薦
便查問(wèn)答是一款實(shí)用的網(wǎng)絡(luò)熱門知識(shí)問(wèn)答平臺(tái),,專注于分享你不知道的知識(shí)、經(jīng)驗(yàn)及生活問(wèn)題,,在這里所有人都能找到答案歡迎網(wǎng)友參與討論,。