
c++ 编程 int a; cout<<a<<endl; 输出的是-858993460 请问这个数字代表什么?
11个回答
展开全部
你想问为什么是这个数,主要是因为编译器在作怪,如果你懂汇编,那么反汇编调试,容易知道
-858993460的十六进制是0xCCCCCCCC,0xCC在X86指令集中为int 3,int 3中断,呵呵,OD其实就是用这个实现的,DEBUG这个机制是为了程序出现内存越界时调试器可以捕捉断点这个异常,而在RELEASE下默认直接是内存清零,用VC RELEASE编译以后显示的结果为0
-858993460的十六进制是0xCCCCCCCC,0xCC在X86指令集中为int 3,int 3中断,呵呵,OD其实就是用这个实现的,DEBUG这个机制是为了程序出现内存越界时调试器可以捕捉断点这个异常,而在RELEASE下默认直接是内存清零,用VC RELEASE编译以后显示的结果为0
展开全部
代表没有初始化定义的变量a,一般定义一个变量要初始化,不初始化就会分配个随机内存地址,像整形一般情况是很大的一个随机值。
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个应该是一个不确定数,并且应该会出现警告吧。因为你没有初始化,不过好像大多的编译器会自动初始化为0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你只做了个口袋,里面什么都没有装进去,却要往外掏,能掏出什么来?只有残留的垃圾……
追问
对啊,系统不会让口袋空着,只能往里面填一些东西。我只是想知道这些东西是否有什么特殊的意义?还是只是默认的一些无意义的数字?
追答
毫无意义的数字!也不是默认的,而且同样的代码在不同平台下会是不同的数字;即是同一平台,当打开的文件多或少时也可能会显示不同的数字!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a没有赋值,所以随机分配内存,而空闲内存里的数据就大部分是-858993460。
更多追问追答
追问
但如果 这样:
int *a=new int[5];
for(int i=0;i<5;I++)
cout<<a[i]<<endl;
输出的又都是-842150451
这有真么解释?
追答
数组里5个元素都没赋值,所以输出内存里默认保存的-858993460
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询