专业回答
区分变量的类型,有两种情况。
1 局部变量。
局部变量在没有显式初始化时,其值C语言规范没做要求,可以是随机值,也可以是编译器随意给定的值。
比如gcc编译器的局部变量就是随机值,可能为任何值。而微软的编译器,如VC或VS,则会初始化为全c,即0xCCCCCCCC。
2 全局变量或静态局部变量。
所有的全局变量,即定义在函数外的变量,默认值为0。
所有的静态局部变量,即定义在函数内部的
static int name
形式的,默认初始化为0。
满意回答
如果是定义的全局变量或者静态变量,未初始化的话就是0.如果是局部变量,那就是以前残留在堆栈里的随机值。
摘自百度知道
不是的。全局变量还是局部变量都可以初始化或者不初始化化,语法没有对这有要求。
但是到实际情况是根据你写的代码来分析。
你写的int
total
=
0;
在你不初始化报错的原因是,int
total
total是没有赋值的一个变量,那他的值就是分配内存中残留的值,属于错误的数据。
你后面用到total+=num[j].一个错误的数据做操作就报错了,就算不报错,你得到的结果是不正确的。
所以在你这个情况,赋值为0
。并不是语法规定。
量的初始化操作的几种方式:1.在定义的时候直接初始化,比如
b = tf.get_variable("b", b.shape, trainable=False, initializer=tf.constant_initializer(b))
2.在会话中使用sess.run()进行初始化,比如
sess.run(tf.global_variables_initializer()) # 初始化全局变量
sess.run(tf.local_variables_initializer()) # 初始化本地变量
3.如果只想要初始化一部分指定变量,使用:
sess.run(tf.variables_initializer(var_list))
其中,var_list是需要初始化的变量列表。
变量在使用前一定要进行初始化,且变量的初始化必须在模型的其它操作运行之前完成。变量的初始化有三种方式,如程序2-13所示:
程序2-13: