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

Why do std::hex and void* on an integer result in the same value

本文关键字:整数 std hex 为什么 void      更新时间:2023-10-16

例如在C++中:

    int number = 10;
    cout << std::hex << number << endl;
    cout << (void *)(int)number << endl;

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

这里的(void *)(int)number到底是什么意思?

我相信,这是实现定义的行为。

实际上:

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