为什么C语言的变量未赋初值,其值就为随机数?

为什么C语言的变量未赋初值,其值就为随机数?

这里的随机其实不是指这个变量的值是任意的,只是这个值不是你确定的。如果你了解定义一个变量就是给它分配了一块内存,但是因为没有初始化,所以这块内存里的值你是不知道的,可能是你以前赋过的值,也可能是某些程序运行是产生的,所以一般都认为其值是无法预料的。希望能帮到你,谢谢。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-26
c语言中只有局部变量在未赋初值时,才是随机数,全局变量和静态变量未赋初值时编译器会自动将其初始化为0。局部变量是分配在堆栈上的,而全局变量和静态变量是分配在数据段中的。这个跟程序的内存分配是有关系的。
第2个回答  2019-12-23
这里的随机其实不是指这个变量的值是任意的,只是这个值不是你确定的。如果你了解定义一个变量就是给它分配了一块内存,但是因为没有初始化,所以这块内存里的值你是不知道的,可能是你以前赋过的值,也可能是某些程序运行是产生的,所以一般都认为其值是无法预料的
第3个回答  2012-08-25
这要从数据在内存中是怎么存的说,简单的说,计算机中,内存的存储单元用完了,是不会给这个存储单元赋值0或者FF的,当这块内存的存储空间不用了,腾出来时,会保持原来的值。当给变量a赋值时,如a=5,就在内存中开辟一个存储空间给a,把新值5赋给这个存储单元,原来的值自然就没了。如果你不赋初值,就会保持原来的值了,所以其值是不确定数,看似是随机数,并不是定义变量时随机赋的。
第4个回答  2012-08-27
debug版本不是随机数 release版本是随机数

为什么C语言的变量未赋初值,其值就为随机数?
这里的随机其实不是指这个变量的值是任意的,只是这个值不是你确定的。如果你了解定义一个变量就是给它分配了一块内存,但是因为没有初始化,所以这块内存里的值你是不知道的,可能是你以前赋过的值,也可能是某些程序运行是产生的,所以一般都认为其值是无法预料的。希望能帮到你,谢谢。

c语言为什么整型变量未赋值是随机值,而二维数组未赋值是0
由于auto变量在内存中的地址不是一成不变的,所以在程序开始前,编译器无法确定它们的值,并不对它们进行初始化。因此,auto变量未被初始化时,编译器也不知道你想要往这个变量里存什么,所以它的值是不确定的,毫无意义的,等着你在运行时给它进行赋值操作。3.如果不对一个数组(非全局的、非静态的...

C语言字符数组不赋初值是默认为'\\0'还是随机值
普通数组没有赋初值,默认的数组元素值是随机数,不是0。如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。例子:includeint main(void){ int m = 0;static int n;int a = 5, b = 6, c = ...

C语言中有些变量可以不赋初值而有些不行为什么??
C语言中变量不赋初值是不能”使用“的。这个”使用“是指读取变量的内容。因为,未赋初的变量中存储的数据是个随机值,其值不确定。随机值的产生原因:变量都是存储在内存中的。程序运行以后,会在内存中给各个变量安置住处,这些地方以前可能有别的程序用过,里面留有上次使用后的结果数据,但系统不...

c语言中,若在函数内部定义变量时没有给变量赋予初值,如int a;,则a的...
局部变量未初始化就是一个随机值,如果声明的int为全局变量会默认初始化为0

C语言定义一个整型二维数组,若没有赋值,系统自动给的是0吗??
C语言规定,普通数组没有赋初值,默认的数组元素值是随机数,不是0。如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。

C语言定义一个整型二维数组,若没有赋值,系统自动给的是0吗??
C语言规定,普通数组没有赋初值,默认的数组元素值是随机数,不是0。如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。

为什么C++ 的int变量无赋值输出结果都是-858933460?说是随机数但不同...
这个不一定把,因为你定义int a和int b,他是在内存上面申请的,你不给他初值他就是原来这个电脑上面那个内存里面的值,不一定是什么的,你只是凑巧了吧,你要是能换一百台电脑试试,里面好是还是这个数那你就真是太NB了,肯定是随机数就是了。

c语言,当数组某些元素未被赋值时其值为多少?
数组未初始化有两种情况:1,未初始化,其值有两种可能:一种是全局数组,被编译器初始化为0。一种是局部数组,为随机数。2, 已初始化,局部数组和全局数组,已初始化,未赋值的数组都会被赋值为0。

C程序设计中a[10]的10个数没赋初值,电脑自动赋为0还是随机赋值?
这个不是计算机随机赋值,本质上,是你定义的变量所在的内存地址原来存在的值会被套用过来。看似和随机给值差不多,但最好不要将这个方法用来做随机数。

相似回答