【发布时间】:2015-03-01 15:11:28
【问题描述】:
我正在尝试以十六进制打印变量的地址(引用),并且也以大写形式打印。但我看到我能够以大写形式打印 77 的十六进制等价物,但不能打印变量的地址(引用)。有人可以帮帮我吗?
以下是我遇到困难的程序。
#include <iostream>
#include <string>
using namespace std;
void print_nb_of_items(const int nb_of_apple, const int& nb_of_pens)
{
cout << "Number of apples = " << nb_of_apple << endl;
cout << "Number of pens = " << nb_of_pens << " Address = " << uppercase << hex << &nb_of_pens << endl;
cout << "Hex output in uppercase = " << uppercase << hex << 77 << endl;
}
/* The main function */
int main(int argc, char * argv[])
{
int nb_apple = 24;
int nb_pens = 65;
print_nb_of_items(nb_apple, nb_pens);
return 0;
}
我得到的程序的输出是:
Number of apples = 24
Number of pens = 65 Address = 0xbffbd438
Hex output in uppercase = 4D
我希望将地址打印为:0xBFFBD438。 我该怎么做?
【问题讨论】:
-
对我来说很好。你用什么编译器?
-
转换为
uintptr_t?指针的输出只是“按照惯例”的十六进制,而不是标准定义的。如果你有一个用于 PDP-11 的 C++ 编译器,它可能会以八进制输出地址,因为这是该架构中指针的通用标准输出格式。 -
@ChristianHackl 不适合我:ideone.com/K1Dwy1
-
@πάνταῥεῖ:嗯,我从来没有真正接触过所有的流操纵器。一种快速的解决方法是将值读入字符串流并将生成的字符串转换为大写(始终牢记十六进制表示本身是特定于平台的)。
-
您使用的“地址(参考)”术语是什么?引用和指针是不同的东西。
标签: c++