我在项目中添加了一个资源。它的大小是4.096字节。 我需要将它分配给DWORD,因为WriteFile()的第三个参数需要它。从'double'转换为'DWORD',可能丢失数据
WriteFile(hFile, pExeResource,size, &bytesWritten, NULL);
所以我投这样的:
UPDATE2:DWORD bootsize = 4096; //并且仍然警告我 但是,我收到了此警告。你可以帮助我吗?
我在项目中添加了一个资源。它的大小是4.096字节。 我需要将它分配给DWORD,因为WriteFile()的第三个参数需要它。从'double'转换为'DWORD',可能丢失数据
WriteFile(hFile, pExeResource,size, &bytesWritten, NULL);
所以我投这样的:
UPDATE2:DWORD bootsize = 4096; //并且仍然警告我 但是,我收到了此警告。你可以帮助我吗?
我认为这是区域/语言差异和C语法的组合。
我假设你的意思是4.096
是带有逗号分隔符的4,096
。 (由于地区/语言的差异,您可能使用.
而不是,
。)
在C/C++中,不使用分隔符。只是这样做,而不是:
DWORD bootsize = (DWORD)4096;
4.096
是一个浮点值(double
型的),只需不到4.1,而DWORD
是一个整数类型(通常类似于一个unsigned int
)。当然,你在转换中失去了浮点值的小数部分。 (也许你的意思是整数值4096
(没有标点符号)?)
4.096
是四个字节的96 /千分之一。我想你只是想4096
。那么你不必投。通常情况下,在编程中不要使用逗号或句点,除非您确实将其表示为小数点。
DWORD bootsize = 4.096; 没有错误,但相同的警告,所以它不能编译 – sparky
非常感谢你,但我仍然得到相同的警告:( – sparky
你是否在其他地方做这个?我上面给出的修正不应该给任何警告。 – Mysticial
不只是这个确切的地方。MS VS2010仍然发出警告 – sparky