【问题标题】:conversion from 'double' to 'DWORD', possible loss of data从“double”转换为“DWORD”,可能会丢失数据
【发布时间】:2011-11-20 22:50:48
【问题描述】:

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

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

所以我是这样投射的:

UPDATE2:DWORD 引导大小 = 4096; //并且仍然警告我 但我收到了这个警告。你能帮帮我吗?

【问题讨论】:

    标签: c++ c double dword


    【解决方案1】:

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

    我假设您的意思是 4.096 是带有逗号分隔符的 4,096。 (由于地区/语言差异,您可能使用. 而不是,。)

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

    DWORD bootsize = (DWORD)4096;
    

    【讨论】:

    • 您在其他任何地方都这样做吗?我上面给出的更正不应该给出任何警告。
    • 你能用显示这个的新代码更新问题吗?
    • 你还有句号.。您需要将其删除。
    • 当然。也许我应该以某种方式抑制警告。非常感谢
    • 抑制警告无济于事。修复代码是解决方案。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      4.096 是一个字节的四又 96/1000。我想你只想要4096。那你就不用投了。通常你不会在编程中使用逗号或句点,除非你真的把它当作小数点。

      【讨论】:

      • DWORD 引导大小 = 4.096;没有错误但同样的警告,所以它不能编译
      猜你喜欢
      • 1970-01-01
      • 2018-02-07
      • 2021-10-27
      • 2018-01-26
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多