2011-11-20 72 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

相關問題