谁帮我解释一下下面这个程序的意思?void main(){ int nD[] = {0x8abcde31234567,0xff875662132}; char* pA = (char*)nD; for(int nI = 0; nI < 6; nI ++) { char cD = pA[nI]; printf("%x",cD); }}

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/08 16:36:10
谁帮我解释一下下面这个程序的意思?void main(){ int nD[] = {0x8abcde31234567,0xff875662132}; char* pA = (char*)nD;   for(int nI = 0; nI < 6; nI ++) {  char cD  = pA[nI];  printf(
xT]OA+&P7YL6$ %McBl A5~b-ffvɿ;;5M|m2ٻsΝ4mv? mGV6{2`X/Tc;M*/-.̣хÙB ((Z_zO x|EYثh)B^;B(t@3q3D9>D)dgXA\ &f"&%!'{4&Z^%'/QeS(}8\@zz:ɜŁWܨl:k2`gҥ`{=eo|a'X]ҐorL[ h]z7f(;Ng9)$R;R`J^gH̶O^HQA{'|%(vmq375Z_ú̄V2EʯB ;MߪN U

谁帮我解释一下下面这个程序的意思?void main(){ int nD[] = {0x8abcde31234567,0xff875662132}; char* pA = (char*)nD; for(int nI = 0; nI < 6; nI ++) { char cD = pA[nI]; printf("%x",cD); }}
谁帮我解释一下下面这个程序的意思?
void main()
{
int nD[] = {0x8abcde31234567,0xff875662132};
char* pA = (char*)nD;

for(int nI = 0; nI < 6; nI ++)
{
char cD = pA[nI];
printf("%x",cD);
}
}

谁帮我解释一下下面这个程序的意思?void main(){ int nD[] = {0x8abcde31234567,0xff875662132}; char* pA = (char*)nD; for(int nI = 0; nI < 6; nI ++) { char cD = pA[nI]; printf("%x",cD); }}
首先,int型变量占了4个字节的空间,数组的第一个元素,即nD[0],你给他0x8abcde31234567这样的值,他根本没办法全部存下来,只存了后面四个字节,即31 23 45 67,这是从高位到低位的顺序,同理,nD[1]也只存下了75 66 21 32这四个字节.
那么从整个数组来看,他们总共16字节空间,从高位到低位每个字节所存的数据是:75 66 21 32 31 23 45 67
那么你把这个数组的首地址(也就是最低位的地址)赋值给了char型指针pA,那么pA所指向的内存空间中的数据自然就是67了,然后再依次输出5个数字(从低位到高位)…………
还有什么不明白的吗?
可以继续追问~