从'double'转换为'DWORD',可能会丢失数据

时间:2011-11-20 22:50:49

标签: c++ c double dword

我在项目中添加了一个资源。它的大小是4.096字节。 我需要将它分配给DWORD,因为WriteFile()的第三个参数需要它。

WriteFile(hFile, pExeResource,size, &bytesWritten, NULL);

所以我这样投了它:

UPDATE2:DWORD bootsize = 4096; //仍然警告我 但我得到了这个警告。你能帮助我吗?

3 个答案:

答案 0 :(得分:3)

我认为这是区域/语言差异与C语法的结合。

我假设您的4.0964,096,并带有逗号分隔符。 (由于区域/语言差异,您可能使用.代替,。)

在C / C ++中,您不使用分隔符。只需这样做:

DWORD bootsize = (DWORD)4096;

答案 1 :(得分:2)

4.096是一个浮点值(类型为double),仅小于4.1,而DWORD是一个整数类型(通常类似于unsigned int)。当然,您会丢失转换中浮点值的小数部分。 (也许你的意思是整数4096(没有标点符号)?)

答案 2 :(得分:2)

4.096是一个字节的四和96/1000。我想你只想要4096。那你就不必投了。通常,您不会在编程中使用逗号或句号,除非您真的将其表示为小数点。