std::cout << (DWORD)"test";
如果我编译并运行它,我每次都会得到不同的输出值,但我不知道为什么。
有任何想法吗?
PS:我使用的是 Windows 7 64 位,并且正在使用 Microsoft Visual C++ 2010 Ultimate 进行编译。
在您的代码中,“test”实际上是指向字符串开头的指针。当您将其转换为 aDWORD
时,您将指针转换为整数类型,并写出该数字。
由于存储“测试”的内存位置会随着每次运行而改变,因此您看到的值也会改变。
std::cout << (DWORD)"test";
相当于:
const char *tmp = "test";
std::cout << (DWORD)tmp;
也就是说,它在将地址转换为 后打印地址DWORD
:
如果您也这样做,它将打印相同的值:
std::cout << (const void*)"test";