C语言中,如果定义一个变量,但不对其进行赋值,那么输出的这个变量的值由什么决定呢?

比如这个程序:
#include<conio.h>
#include<stdio.h>
main()
{
int a;
printf("%d",a);
getch();
}
并没有对a赋值,为什么运行完输出的结果是1992732927呢?
另外,我把int a;换成char a;相当于定义一个字符型变量,同样不对其赋值并以整数型式%d输出,运行结果怎么又变成118了呢?
还有,我做了点改动,把上面的程序变成
#include<conio.h>
#include<stdio.h>
main()
{
int b;
int a;
printf("%d",a);
getch();
}
相当于在定义a之前,先定义b,接着还是直接输出a,结果又变成了2293576!
真是费解~
我好象比较麻烦啊...呵呵
谢谢各位大虾的耐心解答!!

因为字符变量在内存中存放的是其对应的ASCII值,比如说字符‘a’ASCII值是97。

printf("%d",ch);

char ch='a';

输出结果就是97了。所以对于字符变量也可以这样理解:是单字节的整型变量。所以当然可以对一个字符变量赋值一个1啊。

表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。

扩展资料:

循环结构:

循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do while循环和for循环

四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误。

特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。

参考资料来源:百度百科-c语言




温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
操作系统回收内存单元后并不会清除其内容,当程序运行时需要为变量分配空间时就从这些回收的单元中分配,因此变量不赋初值,其值是不确定的。在不同的时刻运行,输出不同;在不同的机器上运行,输出也会不同。本回答被提问者采纳
第2个回答  2011-02-13
当这个程序运行时,他会给a和b各分配一个内存单元,由于你未对啊a,b初始化或赋值就直接输出,此时a的值就是a所在的内存值,由于程序每次分配的内存单元都是随机的,所以每次输出的值也都是随机的,即值是不确定的。
第3个回答  2011-02-14
楼主定义了整型变量a,系统就会为它在内存中分配一个空间,就相当于你拿到了一个盒子,但是你没有对这个变量赋值,所以这个盒子是空的,至于输出的数值其实是没有实际意义的。
第4个回答  2011-02-16
如果你不给变量赋值直接输出的话,变量中的值是随机的,与你使用的编译系统和机器有关,没什么实际意义。