谁帮我解释一下下面这个程序的意思?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/05/06 00:57:46
谁帮我解释一下下面这个程序的意思?void main(){ int nD[] = {0x8abcde31234567,0xff875662132}; char* pA = (char*)nD;   for(int nI = 0; nI < 6; nI ++) {  char cD  = pA[nI];  printf(

谁帮我解释一下下面这个程序的意思?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个数字(从低位到高位)…………
还有什么不明白的吗?
可以继续追问~