我正在学习如何在内存中表示数字.我想知道如何在一些int和float变量的内存中打印实际表示(二进制或十六进制).
我想看看在添加或减去数字时会发生什么情况会导致溢出,例如.
如何访问内存并打印?
您需要将指向该变量的指针分配给a char *,并将其视为长度为字节的数组sizeof(variable).然后,您可以使用%Xprintf 的格式说明符以十六进制打印每个字节.
您可以定义这样的函数:
void print_bytes(void *ptr, int size)
{
unsigned char *p = ptr;
int i;
for (i=0; i<size; i++) {
printf("%02hhX ", p[i]);
}
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
int x = 123456;
double y = 3.14;
print_bytes(&x, sizeof(x));
print_bytes(&y, sizeof(y));
Run Code Online (Sandbox Code Playgroud)