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