c++指针强制类型转换 unsigned int a = 0xFFFFFFF7; char*b = (char*)&a; printf("%08x",*b);输出的问题unsigned int a = 0xFFFFFFF7;char*b = (char*)&a;printf("%08x",*b);这段代码输出为FFFFFFF7,可以理解为*b输出了a存储区的数据
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/22 20:05:13
c++指针强制类型转换 unsigned int a = 0xFFFFFFF7; char*b = (char*)&a; printf("%08x",*b);输出的问题unsigned int a = 0xFFFFFFF7;char*b = (char*)&a;printf("%08x",*b);这段代码输出为FFFFFFF7,可以理解为*b输出了a存储区的数据
c++指针强制类型转换 unsigned int a = 0xFFFFFFF7; char*b = (char*)&a; printf("%08x",*b);输出的问题
unsigned int a = 0xFFFFFFF7;
char*b = (char*)&a;
printf("%08x",*b);
这段代码输出为FFFFFFF7,可以理解为*b输出了a存储区的数据,可是将char*换成unsigned char*之后,输出为000000F7,只输出了低字节,一个字节的内容,这是为什么?
c++指针强制类型转换 unsigned int a = 0xFFFFFFF7; char*b = (char*)&a; printf("%08x",*b);输出的问题unsigned int a = 0xFFFFFFF7;char*b = (char*)&a;printf("%08x",*b);这段代码输出为FFFFFFF7,可以理解为*b输出了a存储区的数据
问题多了去了,char*能输出正确hi运气好
首先int,4字节,他在内存中是反着存的,就是说内存中的a其实是F7 FF FF FF
你定义的char*b,其实b指向的就是F7,由于 定义的是有符号的,所以前面多了6个F,无符号就能正确.
还有就是printf("%08x", *b);这东西是无法输出4字节的,
printf("%02x", *b);
printf("%02x", *(b+1));用这样来输出