C语言未初始化的变量进行计算的问题

#include<stdio.h>intmain(void){inti,sum;for(i=1;i<6;i++)sum+=sum;printf("%d",sum);ret... #include<stdio.h>
int main (void)
{
int i,sum;
for (i=1;i<6;i++)
sum+=sum;
printf("%d",sum);
return 0;
}
sum未初始化,这个程序结果为零。求讲解相关知识
展开
 我来答
风若远去何人留
2015-07-21 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部

对于局部变量没有初始化时,其值C语言规范并没有做规定,不过一般有两种做法,一种是不会去初始化,这时sum值是随机值,不一定是多少。

另一种就是编译器会做这样的初始化,比如gcc一般会默认初始化为0,而VC会默认初始化为0xcccccccc


也就是说,这个程序会跑出什么结果,取决于编译器。甚至有些编译器遇到这种情况,会直接报错,编译失败。


而你现在的结果,明显是编译器默认初始化为0的情况。

其实判断这个,不需要这么麻烦,直接

#include<stdio.h>
int main (void)
{
  int sum;
  printf("%d",sum);
  return 0;
}

就可以知道编译器是怎么做的了。

piestkj
2015-07-21 · TA获得超过928个赞
知道小有建树答主
回答量:820
采纳率:0%
帮助的人:615万
展开全部
未初始化的变量值是不确定的,你这种情况来看,sum未初始化,初始值为0、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式