首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

Release版本上变量未初始化的有关问题,好奇怪

2012-09-02 
Release版本下变量未初始化的问题,好奇怪在Release版本下,百度谷歌了很多都说未初始化变量的值是随机的。在

Release版本下变量未初始化的问题,好奇怪
在Release版本下,百度谷歌了很多都说未初始化变量的值是随机的。
在VC2010下
#include<stdio.h>
int main()
{
int x;
int a;
printf("%d\n",a);
printf("%d",x);

}
输出的值a和x每次都是1910650644

然后如果把一个变量由int改为char
#include<stdio.h>
int main()
{
int x;
char a;
printf("%d\n",a);
printf("%d",x);

}
每次输出的值,int变量x的值随机变化,而char的值固定为113,就是字符'q'
如果把两个变量都改为char,又每次固定为113.
很想知道,这是为什么?

[解决办法]
这里所指的随机的真正含义是说你所无法得知的意思,你所定义变量的地址中所存放的数据是由整个系统运行的很多因素所影响的,不是你所能掌控和获取的,其实追究这些是没有意义的,所以养成好习惯先初始化。
[解决办法]
main 函数是由 CRT 库来调用的, 在调用 main 之前还会有其他的函数调用, 如果这些函数调用使用了参数或局部变量, 则它的这些变量地址会和 main 中的局部变量地址相同. 如果在调用 main 之前调用的那个函数刚好把它的参数或局部变量设置成了固定的值, 则有可能每次相同
[解决办法]
这些都不代表什么。。可能运行时那个内存正好是这个值。。
你可以隔时间段运行看看。。变量最好是初始化!!

热点排行