You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:27:32