gpt4 book ai didi

c++ - 我可以在 C++ 中将指针地址(即十六进制整数)转换为十进制和八进制基数 int

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:53 26 4
gpt4 key购买 nike

#include <iostream>

using namespace std;

int main()
{
int *a = nullptr;
int b;
a = &b;

cout << noshowbase;
cin >> b;
cout << dec << a << '\t' << oct << a << '\t' << hex << a;
}

考虑这段代码。它旨在将变量(此处为 b )的地址( &ba )(十六进制整数)转换为 decoct使用 <iostream> 的值流操纵器..但是在运行时,它们的输出都是相同的(hexdecoct)..两者都没有,没有任何编译错误。那么请您详细说明这是什么原因??还有 noshowbase似乎对输出没有任何影响。无论如何在地址之前输出 0x。

最佳答案

地址不是十六进制整数。这是一个地址。

碰巧一个地址被实现为一个整数,指的是一个内存位置,并且可以被重新解释为一个整数。这很少是一件有用的事情(特别是如果您是无错误代码的粉丝),但它会时不时地出现。您可以使用 reinterpret_cast<uintptr_t>(a)要做到这一点。 (请注意,转换为 int 通常不会正常工作。记住我所说的无错误代码。)当您打印结果整数时,它将打印为十进制、八进制, 或十六进制整数,取决于当前设置的基数。

关于c++ - 我可以在 C++ 中将指针地址(即十六进制整数)转换为十进制和八进制基数 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30011241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com