[英]Alternate method for typecasting in C?
我在一些代碼中碰到了這一行,找不到在任何地方定義的語法:
*(float *)csCoord.nX = lImportHeight* .04f; /* magic number to scale font size */
如果我從.04f
刪除f
,則編譯器會發出警告,提示由於從“ double”轉換為“ float”而可能導致數據丟失。 我假設f
正在做某種類型轉換。
誰看過這個嗎? C標准在哪里定義?
如果沒有“ f”,則數量0.04是兩倍。 如果將lImportHeight乘以雙倍,則會得到另一個雙倍。 然后,將其存儲在浮動大小的存儲位置中,從而失去精度。 對於“ f”,0.04f是浮點文字。 將它乘以lImportHeight,得到一個浮點數; 則分配不會導致精度下降。
不知道它在標准中的定義位置,但是您使用f
來表示浮點數,否則編譯器會認為它是一個double。 同樣,您可以通過添加u
或long by l
(小寫ell)等來指定要無符號的整數。
到底是什么問題? 您的編譯器在.04f上阻塞嗎? 嘗試
(float) .04
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.