[問題] 印每一個byte 用float存的數值

看板C_and_CPP作者時間9年前 (2015/03/11 17:57), 編輯推噓0(006)
留言6則, 5人參與, 最新討論串1/1
開發平台(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裡 應該不用考慮數值的問題?! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.152.134 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1426067874.A.6FE.html

03/11 18:19, , 1F
用函數接就可以硬轉,但以前較笨。標準方法是用union。
03/11 18:19, 1F

03/11 18:55, , 2F

03/11 21:38, , 3F
你可以用inttypes.h裡的PRIx1
03/11 21:38, 3F

03/11 21:38, , 4F
%x取的應該不是1byte
03/11 21:38, 4F

03/11 22:24, , 5F
只有我覺得這段碼 compile 會失敗嗎?
03/11 22:24, 5F

03/12 08:53, , 6F
http://ideone.com/RWJkSL 跟一樓一樣建議用union
03/12 08:53, 6F
文章代碼(AID): #1L016YR- (C_and_CPP)