VC中整型和长整型的默认值疑问,该如何处理

VC中整型和长整型的默认值疑问
今天在调试VC6时发现一个问题,直接导致怀疑我对之前对VC的理解
对未赋初始值的整型变量,为什么默认为-858993460, 这个明显超出了整型的取值范围(正负32768),为什么结果不是 -32768;
于是我把变量设置成长整形,试了下,发现仍然是 -858993460。按我的预期的应该是长整形的最小值(好像是-2,147,483,648)
以上测试我代码如下:
int i;
long l;
CString str;
str.Format(_T("%d"),i);
MessageBox(str,NULL,MB_OK);
//长整形
tr.Format(_T("%ld"),l);
MessageBox(str,NULL,MB_OK);
;;
在以上的测试中我怀疑是Format函数输出的问题,于是我就做了另一个测试,如下:
int i,j;
j=i+100;
CString str;
str.Format(_T("%d"),j);
MessageBox(str,NULL,MB_OK);
测试结果为:-858993360;
my gad ,看来结果就是未赋初值的整型和长整形,默认就为-858993460,这个数怎么来的?
是否与操作系统及CPU有关?





------解决方案--------------------
在 DEBUG 模式下,
会把为赋初值的变量设置为 0xCCCCCCCC...
这样你就可以检测到那些变量没有设置初值来了。
------解决方案--------------------
用VC DEBUG编译的就是这个数
-858993460对应HEX为0xCCCCCCCC
0xCC在X86指令集中为int 3
DEBUG这个机制是为了程序出现内存越界时调试器可以捕捉断点这个异常
而在RELEASE下默认直接是内存清零,也就是用VC RELEASE编译以后显示的结果为0


------解决方案--------------------
探讨

你用的是谭浩强的书?