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

これをコンパイルして実行すると、毎回異なる出力値が得られますが、その理由がわかりません。

何か案は?

PS: Windows 7 64 ビットを使用しており、Microsoft Visual C++ 2010 Ultimate でコンパイルしています。

4

2 に答える 2

4

コード内の「test」は、事実上、文字列の先頭へのポインターです。にキャストするとDWORD、ポインターを整数型にキャストし、その数値を書き出します。

「テスト」を格納しているメモリの場所は実行ごとに変わる可能性があるため、表示される値は変わります。

于 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 に答える