簡體   English   中英

*((int*)&f) 在 C 中有什么作用?

[英]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以消除第一個無用的假設):

  1. (union { float f; uint32_t i; }){f}.i
  2. uint32_t i; memcpy(&i,&f,sizeof i);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM