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/10/08 03:57:15
#36 _!h5%.i6ۧ*0BJE0OYa4s lZ~R~eZ9{3|s?;oq3v~2&G7WMwN={=ԙ5'Zёx70Ux~HotZB0[lZA\{BvfHG+9ԯ}k^)`SR]tЇiʛ$+\o%3 !0U_e6<Vk'q;})l__
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));用这样来输出