C语言赋初值的问题

chenxifenghai 2011-06-09 08:48:40
这是关于C语言赋初值的问题,后悔之前没学好。现在不知道是我的能力有问题还是怎么样。依然有很多小问题不明白
如这么个程序
#include<stdio.h>
main()
{
long int fac;
int i,n;
printf(“please input n:”);/*输入n的值*/
scanf("%d",&n); /*从键盘获取n*/
for(i=1;i<=n;i++)
{
fac=fac*i;
}
printf("fac=%12ld",fac);
}
而我得到的结果是
please input n:5
fac=503316480

而我对fac赋初值时如
#include<stdio.h>
main()
{
long int fac=1;
int i,n;
printf(“please input n:”);/*输入n的值*/
scanf("%d",&n); /*从键盘获取n*/
for(i=1;i<=n;i++)
{
fac=fac*i;
}
printf("fac=%12ld",fac);
}
就可以得到正常结果 :fac=120

这是编译器的问题吗?我用的是tc 2.0呢
...全文
378 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zac33201 2011-06-12
  • 打赏
  • 举报
回复
fac要付初值的
lengwuqin 2011-06-12
  • 打赏
  • 举报
回复
fac没有初始化,编译器会付给一个随机值,在tc2.0下面,我记得若果声明了一个int i;
printf("%d",i);会打印出53,系统随机分配的
bjhbiao 2011-06-12
  • 打赏
  • 举报
回复
C语言每个变量最好都赋初值,养成习惯
pathuang68 2011-06-11
  • 打赏
  • 举报
回复
任何变量(包括普通变量、普通变量指针、普通变量引用、对象变量、对象指针、对象引用...)使用之前,都需要初始化!(虽然有些变量你自己没有去显示初始化,但编译器偷偷地替你做了)
右脚小拇指 2011-06-11
  • 打赏
  • 举报
回复
这是初始值的问题,对于一种数据类型, 没有赋初值,
系统会随机的给定一个值,

所以在编程的时候一定要注意, 不然会出现一些不可捉摸的值
飞流 2011-06-11
  • 打赏
  • 举报
回复
如果你不指定变量为静态的,那么就默认为auto,也就是说这时候若不进行初始化,那它将是一个不可预测的随机数
天涯alone 2011-06-11
  • 打赏
  • 举报
回复
程序的一大类问题都是没有初始化导致的,这也是 C++ 构造函数设立的初衷
这个说的好,要体会!
chenxifenghai 2011-06-11
  • 打赏
  • 举报
回复
哈哈,我明白啦,谢谢各位
wizard_tiger 2011-06-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 chenxifenghai 的回复:]

引用 1 楼 biegaoshuwoya 的回复:
你第一个没初始化呀!fac=fac*i; 如果没的话,调用这个时就会随机出现一个值赋给fac!!!!!!

如果是随机值的话,那我多次运行为什么会得到同一个结果呀,我还在深入学习对这些不是很明白哦
[/Quote]
除非你重启计算机,否则的话这个变量经常指向同一个内存位置(除非这片内存恰巧被使用)。
AnYidan 2011-06-10
  • 打赏
  • 举报
回复
程序的一大类问题都是没有初始化导致的,这也是 C++ 构造函数设立的初衷
yel617 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 singaporeraining 的回复:]
上面全部正解

在扩展一下:

局部变量不初始化,值随机
全局变量不初始化,值=0
字符变量不初始化,值=null
[/Quote]学习了
tomatobin 2011-06-10
  • 打赏
  • 举报
回复
路过~~~~
chenxifenghai 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 biegaoshuwoya 的回复:]
你第一个没初始化呀!fac=fac*i; 如果没的话,调用这个时就会随机出现一个值赋给fac!!!!!!
[/Quote]
如果是随机值的话,那我多次运行为什么会得到同一个结果呀,我还在深入学习对这些不是很明白哦
新加坡下雨了 2011-06-09
  • 打赏
  • 举报
回复
上面全部正解

在扩展一下:

局部变量不初始化,值随机
全局变量不初始化,值=0
字符变量不初始化,值=null
5t4rk 2011-06-09
  • 打赏
  • 举报
回复
for(i=1;i<=n;i++)
{
fac=fac*i; //在使用fac之前的值,楼主没有初始化。所以是系统随机给的
}
//其实楼主你的这个for循环在执行的时候,你心里想的是fac是不是系统给的就是1??
cqltwslt 2011-06-09
  • 打赏
  • 举报
回复
局部变量应该要初始化的!!!!!
否则会随机得到内存中的垃圾值。
ccnyou 2011-06-09
  • 打赏
  • 举报
回复
全局变量编译器可能会初始化,局部变量的无能为力
我真的是琦琦 2011-06-09
  • 打赏
  • 举报
回复
fac要初始化的,不然是个不确定的值。。。。。
proghua 2011-06-09
  • 打赏
  • 举报
回复
fac不赋值的话,是内存中的脏值
就想叫yoko 2011-06-09
  • 打赏
  • 举报
回复
fac不赋初值
那么初值将是个随机值
加载更多回复(4)

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧