我知道如果整数被解剖而不是作为一个整体来计算,那么单个字节的总数就会产生不正确的结果。然而,出于好奇,我希望检查单个字节和make.I'm不知道这是正确的整型指针检查每个字节:如何访问整数指针中的每个字节?
#include <iostream>
int main(int argc, char *argv[])
{
using namespace std;
int *num = new int;
*num = 123456789;
cout << "Num: " << *num << '\n';
char* numchar_ptr = reinterpret_cast<char*> (num);
for (int i = 0; i < 4; ++i)
{
cout << "number char: " << i << ' ' << (short) *(numchar_ptr+i) << '\n';
*(numchar_ptr+i) = i
}
cout << "New num: " << *num << '\n';
delete num;
return 0;
}
按照循环,整数中的字节将是:它等于00000000 00000001 00000010 00000011二进制和66051十进制 但是我得到结果“New num”是50462976.为什么?
如果你是一个64位平台上的'int'可能是64位,这将使你的循环和计算错误。 –
@Joachim:如果我们谈论x86-64等,那么整数可能仍然是32位,除非你有一个奇特的编译器。 –
@OliCharlesworth是的,看起来我得到了我的'int'和'long'混合起来......午餐时间我想。 –