#include <iostream>
using namespace std;
int main(){
int a[2]={261,0};
int *pi=a;
char *p=(char *)pi;
cout<<*(int*)p++<<endl;
cout<<*(int*)p<<endl;
cout<<(int)*p<<endl;
cout<<(int)*(char*)pi<<endl;
return 0;
}
输出为:
261
1
1
5
这个问题首先你要了解计算机的内存机制,计算机内存一般是按字节存储的(至少我们现在用的pc机都是这样),我们分析的时候经常数字转化为16进制进行分析,因为一位16进制正好是4bit,两位16进制就是一字节,261转化为16进制之后是105,如下:
这里写图片描述
然后它在内存中的存储如果按照大端存储,就是下图这样的,我们用的pc机大多是按照大端存储的,就是低字节存在内存的低地址,小端存储相反,不清楚的话自己百度一下:
这里写图片描述
cout<<(int)p++<