C语言中,如果定义一个变量,但不对其进行赋值,那么输出的这个变量的值由什么决定呢?
题目
C语言中,如果定义一个变量,但不对其进行赋值,那么输出的这个变量的值由什么决定呢?
比如这个程序:
#include
#include
main()
{
int a;
printf("%d",a);
getch();
}
并没有对a赋值,为什么运行完输出的结果是1992732927呢?
另外,我把int a;换成char a;相当于定义一个字符型变量,同样不对其赋值并以整数型式%d输出,运行结果怎么又变成118了呢?
还有,我做了点改动,把上面的程序变成
#include
#include
main()
{
int b;
int a;
printf("%d",a);
getch();
}
相当于在定义a之前,先定义b,接着还是直接输出a,结果又变成了2293576!
我好象比较麻烦啊...呵呵
答案
操作系统回收内存单元后并不会清除其内容,当程序运行时需要为变量分配空间时就从这些回收的单元中分配,因此变量不赋初值,其值是不确定的.在不同的时刻运行,输出不同;在不同的机器上运行,输出也会不同.
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
最新试题
- she told us to stay away from the dog because it ( ) {will} cost much money to buy food for it
- 英语作文一个美好的假期
- 若只用酚酞作指示剂,则不能列出混合碱中什么含量?
- _______great progress you have made in your studies,you should continue to work hard.
- 哪一个大洲的面积与中国陆地面积最接近?
- 白雪歌送武判官归京中运用互文修辞写边塞寒冷的句子是什么?
- 若XYZ均为正整数,则(xy+yz)/[(x^2)+(y^2)+(z^2)]的最大值为
- 2:x=9/5,5/4(x+1)=16,7*(x+2分之1)=6分之49 ,怎么解方程,会解多少解多少吧
- (1)观察下列每列数的规律,在横线上填写适当的数
- 用生生不息,花团锦簇,宛如.无论都造句
热门考点