2011-11-20 328 views
-3

我在项目中添加了一个资源。它的大小是4.096字节。 我需要将它分配给DWORD,因为WriteFile()的第三个参数需要它。从'double'转换为'DWORD',可能丢失数据

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

所以我投这样的:

UPDATE2:DWORD bootsize = 4096; //并且仍然警告我 但是,我收到了此警告。你可以帮助我吗?

回答

3

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

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

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

DWORD bootsize = (DWORD)4096; 
+0

非常感谢你,但我仍然得到相同的警告:( – sparky

+0

你是否在其他地方做这个?我上面给出的修正不应该给任何警告。 – Mysticial

+0

不只是这个确切的地方。MS VS2010仍然发出警告 – sparky

2

4.096是一个浮点值(double型的),只需不到4.1,而DWORD是一个整数类型(通常类似于一个unsigned int)。当然,你在转换中失去了浮点值的小数部分。 (也许你的意思是整数4096(没有标点符号)?)

2

4.096是四个字节的96 /千分之一。我想你只是想4096。那么你不必投。通常情况下,在编程中不要使用逗号或句点,除非您确实将其表示为小数点。

+0

DWORD bootsize = 4.096; 没有错误,但相同的警告,所以它不能编译 – sparky

相关问题