[英]What does *((int*)&f) do in C?
我通過這個答案找到了一種在 c 中將浮點數轉換為二進制的方法: Convert float to binary in C ,但我不確定答案中使用的代碼*((int*)&f)
實際用於轉換數字. 它究竟是做什么的?
它調用未定義的行為,這意味着如果您的程序可訪問,則它是無效的。
有人打算做的是將float
的位重新解釋為int
,假設int
是 32 位並且可能float
是 IEEE 單一的。
有兩種正確的方法可以做到這一點(將int
替換為uint32_t
以消除第一個無用的假設):
(union { float f; uint32_t i; }){f}.i
uint32_t i; memcpy(&i,&f,sizeof i);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.