我在一些代码中遇到了这一行,但找不到任何地方定义的语法:
*(float *)csCoord.nX = lImportHeight* .04f; /* magic number to scale font size */
如果我从.04f
中删除了浮点数,那么编译器就会给出一个警告,指出由于从‘f
’到'float‘的转换,可能会丢失数据。我假设f
正在进行某种类型转换。
以前有没有人见过这个?这在C标准中是在哪里定义的?
发布于 2009-02-13 13:08:55
尾部的f指示编译器它是一个浮点类型的文字,就像"“表示文字字符串,L后缀表示一个长整型。
发布于 2009-02-13 13:10:23
如果没有"f",那么0.04是一个双精度数。当你将lImportHeight与double相乘时,你会得到另一个double。然后将其存储在浮点数大小的内存位置,从而失去精度。对于"f",0.04f是一个浮点型文字。用它对lImportHeight进行多次赋值,得到一个浮点数;然后赋值不会导致精度损失。
发布于 2009-02-13 13:09:45
我不知道它在标准中是在哪里定义的,但是您可以使用f
来表示一个浮点型,否则编译器会假定它是一个双精度型。类似地,您可以通过添加一个u
来指定一个无符号整数,或者通过l
(小写字母ell)指定一个长整型,等等。
https://stackoverflow.com/questions/547679
复制