关于vc++中i赋值问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 11:11:20
用vc++建个helloword程序后,加上int i; i=4;
#include "stdafx.h"

int main(int argc, char* argv[])
{ int i;
i=4;
printf("Hello World!\n");
return 0;
}
在int i=4处下断
4 编译 组建 开始调试 go 得到i值为-858993460
5 再选调试 step into i值为4
请问这个-858993460怎么解释 如果把int i; i=4;改成int i=4; 下断后还是-858993460 又怎么解释

呵呵 int i;之后 首先是在栈上分配一块内存(如果你不知道栈是什么 就去看变量的存储类型 这个知识点) 。至于这快内存的内容 没有初始化 它的值是随即的 但是也有一定的规律 这里就不说了 总之和内存有关系。 在执行了i=4;之后 内存的值变成了4 OK 就这样。

大概是因为int i=4;这行还没有执行,所以i只是一个随机数,到了下行既完成了赋值