[問題] 印每一個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