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

比如这个程序:#include<conio.h>#include<stdio.h>main(){inta;printf("%d",a);getch();}并没有对a赋值,... 比如这个程序:
#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!
真是费解~
我好象比较麻烦啊...呵呵
谢谢各位大虾的耐心解答!!
展开
 我来答
帐号已注销
高粉答主

2020-02-18 · 说的都是干货,快来关注
知道小有建树答主
回答量:263
采纳率:95%
帮助的人:11.3万
展开全部

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

printf("%d",ch);

char ch='a';

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

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

扩展资料:

循环结构:

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

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

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

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




sun_siliang
推荐于2017-11-24 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4652万
展开全部
操作系统回收内存单元后并不会清除其内容,当程序运行时需要为变量分配空间时就从这些回收的单元中分配,因此变量不赋初值,其值是不确定的。在不同的时刻运行,输出不同;在不同的机器上运行,输出也会不同。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
czsr1234
2011-02-13 · 超过23用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:67.6万
展开全部
当这个程序运行时,他会给a和b各分配一个内存单元,由于你未对啊a,b初始化或赋值就直接输出,此时a的值就是a所在的内存值,由于程序每次分配的内存单元都是随机的,所以每次输出的值也都是随机的,即值是不确定的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Echoの忽忽a6ae
2011-02-14 · TA获得超过112个赞
知道答主
回答量:89
采纳率:0%
帮助的人:60.5万
展开全部
楼主定义了整型变量a,系统就会为它在内存中分配一个空间,就相当于你拿到了一个盒子,但是你没有对这个变量赋值,所以这个盒子是空的,至于输出的数值其实是没有实际意义的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
善·化
2011-02-16
知道答主
回答量:20
采纳率:0%
帮助的人:0
展开全部
如果你不给变量赋值直接输出的话,变量中的值是随机的,与你使用的编译系统和机器有关,没什么实际意义。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式