C++中未初始化的整数与指针为何输出不同进制的随机值?
问题:未初始化变量与指针的随机值输出进制为何不同?
我了解到指针本质是可存储其他变量地址的整数。像所有非静态变量一样,未初始化时会被赋予随机值,但为何这些随机值的进制不同?
测试代码
#include <iostream> using namespace std; int main(){ int a; int *p; cout << a << " " <<p << endl; return 0; }
控制台输出
198271008 0x10bd1cc20
解答
这是C++的std::cout对不同类型的默认输出规则决定的:
- 对于
int这类普通整数类型,cout默认以十进制输出数值; - 对于指针类型,
cout默认以十六进制(带0x前缀)输出地址值——这是行业惯例,因为内存地址用十六进制表示更紧凑,也更符合底层内存布局的阅读习惯。
其实两者底层都是内存里的随机二进制数据,根本不存在“进制”的概念,只是cout根据变量类型把它们转换成了不同进制的字符串来展示而已。
内容的提问来源于stack exchange,提问作者Ramyz
相关产品推荐
相关产品推荐

