为什么整数上的std :: hex和void*会产生相同的值

0 c++

例如在C++中:

    int number = 10;
    cout << std::hex << number << endl;
    cout << (void *)(int)number << endl;
Run Code Online (Sandbox Code Playgroud)

为什么两个输出具有相同的十六进制值?

(void *)(int)number真的意味着什么?

小智 5

我认为,这是实现定义的行为.

作为一个实际问题:

  • 指针的格式化输出倾向于给出它们指向的地址.
  • 在机器代码级别,指针倾向于存储为表示存储器地址的32位或64位整数.
  • 通过简单地将机器语言整数重新解释为表示指针,可以实现转换.