我正在学习斯坦福的c范式。 https://youtu.be/H4MQXBF6FN4?t=1762
教授展示了这段代码并说它会改变数组的位模式。
短裤是2字节,Ints是4字节。
#include <iostream>
int main()
{
int arr[5];
arr[3] = 128; // 0000 0000 1000 0000
((short*)arr)[6] = 2; // 0000 0010
std::cout << arr[3]; // my compiler prints out 2, should it be 640? should be 512 + 128???? 1010000000 would be the bit pattern?
return 0;
}
答案 0 :(得分:0)
您的int可能是64位,因此第二次分配不会达到目标。
教授假设32位int。
尝试打印sizeof(int)和sizeof(短)。
编辑: 正如iMoses所说,这是因为16位值为2会覆盖小端CPU上的128