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

如果我编译并运行它,我每次都会得到不同的输出值,但我不知道为什么。

有任何想法吗?

PS:我使用的是 Windows 7 64 位,并且正在使用 Microsoft Visual C++ 2010 Ultimate 进行编译。

4

2 回答 2

4

在您的代码中,“test”实际上是指向字符串开头的指针。当您将其转换为 aDWORD时,您将指针转换为整数类型,并写出该数字。

由于存储“测试”的内存位置会随着每次运行而改变,因此您看到的值也会改变。

于 2011-09-19T20:17:49.520 回答
2
std::cout << (DWORD)"test";

相当于:

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

也就是说,它在将地址转换为 后打印地址DWORD

如果您也这样做,它将打印相同的值:

std::cout << (const void*)"test";
于 2011-09-19T20:20:36.533 回答