[问题] 印每一个byte 用float存的数值

楼主: Rohan   2015-03-11 17:57:50
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
我想看用float宣告存的数值 每一个byte的数值是多少
例如 float a=1.1;
1.1会存进4byte的内存空间 把每一个byte存的数字用16进位印出来看
int main()
{
float test;
test =1.1;
char *a;
//a=&test;
a=(char*)&test
printf("test = %\x\n",a[0]);
printf("test = %\x\n",a[1]);
printf("test = %\x\n",a[2]);
printf("test = %\x\n",a[3]);
return 0;
}
但是会出错 因为他找不到16进位的数字 应该要如何改?!
另外想问一下 为什么a=(char*)&test 这里需要强制宣告
一开始没强制宣告结果错了= =
我只是抓test的内存位址存到a里 应该不用考虑数值的问题?!
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-03-11 18:19:00
用函数接就可以硬转,但以前较笨。标准方法是用union。
作者: sos0214 (kaleidoscope)   2015-03-11 18:55:00
作者: OPIV (Monitor)   2015-03-11 21:38:00
你可以用inttypes.h里的PRIx1%x取的应该不是1byte
作者: EdisonX (卡卡兽)   2015-03-11 22:24:00
只有我觉得这段码 compile 会失败吗?
作者: yaushung (Ronald)   2015-03-12 08:53:00
http://ideone.com/RWJkSL 跟一楼一样建议用union

Links booklink

Contact Us: admin [ a t ] ucptt.com