[英]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.