首页 > 解决方案 > 为什么 std::dec 不将十六进制内存地址转换为十进制?

问题描述

int x = 99;
printf("&x = %p\n", &x);
printf("&x = %d\n", &x);
std::cout << &x << std::endl;
std::cout << std::dec << &x << std::endl; // problematic line (5)
std::cout << std::dec << 0x0D << std::endl;

输出是:

&x = 0x7ffe5f1d0434
&x = 1595737140 // I don't think this is correct.
0x7ffe5f1d0434
0x7ffe5f1d0434
13 // decimal of 0x0D

我不明白为什么上面的第五行不输出变量地址的十进制表示x。我的用法std::dec应该是正确的,因为它适用于0x0D. 所以,我怀疑&x可能不是我认为的十六进制数。但是,我不确定,所以想问一下。

提前致谢。

标签: c++hexdecimal

解决方案


推荐阅读