簡體   English   中英

在C中進行類型轉換的替代方法?

[英]Alternate method for typecasting in C?

我在一些代碼中碰到了這一行,找不到在任何地方定義的語法:

*(float *)csCoord.nX = lImportHeight* .04f; /* magic number to scale font size */

如果我從.04f刪除f ,則編譯器會發出警告,提示由於從“ double”轉換為“ float”而可能導致數據丟失。 我假設f正在做某種類型轉換。

誰看過這個嗎? C標准在哪里定義?

尾隨的f指示編譯器它是浮點型文字,就像“”表示文字字符串,L后綴表示long int一樣。

文字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.

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