簡體   English   中英

當將字符串類型轉換為DWORD時,為什么在運行時獲得不同的值?

[英]Why do I get a different value at run-time when type-casting a string to DWORD?

std::cout << (DWORD)"test";

如果我編譯並運行此命令,則每次都會得到不同的輸出值,但是我不知道為什么。

有任何想法嗎?

PS:我正在使用Windows 7 64位,並且正在使用Microsoft Visual C ++ 2010 Ultimate進行編譯。

在您的代碼中,“ test”實際上是指向字符串開頭的指針。 當將其強制轉換為DWORD ,會將指針強制轉換為整數類型,然后寫出該數字。

由於每次運行都會改變存儲“測試”的內存位置,因此您看到的值將更改。

std::cout << (DWORD)"test";

等效於此:

const char *tmp = "test";
std::cout << (DWORD)tmp; 

也就是說,它在將地址轉換為DWORD后打印地址:

如果您也這樣做,它將打印相同的

std::cout << (const void*)"test";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM