C语言中“局部变量要初始化,全局变量不要初始化”,是这样的吗

大家看看这个total是全局变量还是局部变量,但是不初始化就会出错... 大家看看这个total是全局变量还是局部变量,但是不初始化就会出错 展开
 我来答
pqaabbccdd
推荐于2017-09-27 · TA获得超过1513个赞
知道小有建树答主
回答量:523
采纳率:0%
帮助的人:607万
展开全部
不是的。全局变量还是局部变量都可以初始化或者不初始化化 ,语法没有对这有要求。
但是到实际情况是根据你写的代码来分析。
你写的int total = 0;
在你不初始化报错的原因是,int total;
total是没有赋值的一个变量,那他的值就是分配内存中残留的值,属于错误的数据。
你后面用到total+=num[j].一个错误的数据做操作就报错了,就算不报错,你得到的结果是不正确的。
所以在你这个情况,赋值为0 。并不是语法规定。
追问
就是说什么变量会默初始化为零,什么变量是不初始化的,网上一些说法是局部变量在堆中,不会初始化为零
追答
你说的情况分不同编译器,和环境都是不能确定的。
编程要保证安全性,依靠默认帮你赋值为0 ,在你不确定的时候可能就会出错了。
这些让程序员写的严谨点,不要出错、
匿名用户
2015-08-26
展开全部
全局变量,
“局部变量要初始化,全局变量不要初始化”这个不一定的,还要看编译器的,
如果编译器要求初始化那就按要求来做
追问
就是有些变量会默认被初始化为零,有些不会
追答
是的,有些编译器会这么干
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式