看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《cbkcbk (C')》之銘言: : float f=3.141592; : int i=*(int *)&f; : 不了解*(int *)&f作了什麼 如果是這樣的程式碼,你應該可以理解: float *fp = &f; /* fp = address of f */ float f2 = *fp; /* f = fp 的 dereference,這時的 f2 = 3.141592 */ 那你原本的程式碼,可以這樣看 float *fp = &f; /* fp = address of f */ int *ip = (int *)fp; /* 把 fp 指的地方當作 (int *) */ int i = *ip; /* dereference,把那個記憶體裡的內容,當作 int 來解讀 */ float f = 3.141592; 實際上在記憶體裡面存的是 01000000010010010000111111011000 這樣的東西 (根據 IEEE 754) 而這個東西如果當作整數來看,就是 1078530008 這樣的值,也就是後來的 i -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.46