我在这里遇到了一个问题。我输入了一个整数,转换了整数指针并将其发送到一个print_bytes
接受char*
指针和要打印的字节数的函数中。尝试打印每个字节的地址和十六进制类型的数字。但是对于 250,第一个字节的 o/p 应该是 fa,接下来的 3 个字节应该是零,但是它会打印第一个字节的 fffffffa。
#include<stdio.h>
using namespace std;
void print_bytes(char* ptr,int len)
{
for(int i=0;i<len;i++)
{
printf("%p %x\n",ptr+i,*(ptr+i));
}
}
int main()
{
int a=250;
print_bytes((char*)&a,4);
return 0;
}
但是当我将指针类型更改为unsigned char*
它时,它会给出正确的输出。这意味着 MSB 为 1char*
会使输出出错。还是我错过了什么?