初学C语言Bug大赏
啦啦啦 , 进了计算机系 。 不用说学习C语言当然少不了 。 说到写程序少不了是什么?对就是Bug 。
什么你还不知道什么是Bug?
Bug是计算机领域专业术语 , bug原意是“臭虫” , 现在用来指代计算机上存在的漏洞 , 原因是系统安全策略上存在的缺陷 , 有攻击者能够在未授权的情况下访问的危害 。
名称由来:
为马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家 , 同时也是世界最早的一批程序设计师之一 , 有一天 , 她在调试设备时出现故障 , 拆开继电器后 , 发现有只飞蛾被夹扁在触点中间 , 从而“卡”住了机器的运行 。 于是 , 霍波诙谐的把程序故障统称为BUG(飞虫) , 把排除程序故障叫DEBUG , 而这奇怪的“称呼” , 竟成为后来计算机领域的专业行话 。
以上引自百度百科:bug (计算机领域漏洞)
经过这些天的学习 , 我整理了我与我的同学们在上机过程中遇到的Bug 。 有句话说得好:“那些受过的伤 , 终究会成为我们身上的勋章” 。 有错误是件好事 , 它可以让我们变成“大神"又进一步 。 好了 , 废话不多说 , Follow me 开始Debug吧!
文章插图
一.变量初始化不规范导致的错误#include #include int main()//这是个运动会奖牌数目统计{int n,z;//count1表示金牌数目 , 以此类推count2,count3int count1,count2,count3;//这里属于局部变量初始化不规范printf("请输入运动会天数:");scanf("%d",for(int i=0;i
文章插图
很显然银牌数目是错的 , 3+5+5怎么可能等于29呢?经过我的debug发现一开始变量count2的值就不为零 。 但是为什么呢?于是我去查了一下资料 , 找到了问题所在:
原来啊 , 这是由于变量存放的位置是不同导致的 。 全局变量、静态变量处于数据区 , 默认初始值为0(指定的话就为指定值) , 而局部变量处于堆栈区 , 它的值为内存中的值 , 是随机的 。
这里我根据这个理解我给出了两种改法
法1:把int count1,count2,count3;变成全局变量
#include #include int main()//这是一段关于密码输入判断的代码{char String[5]//这里忘写”;“了printf("请输入4位数的密码:\n");gets(String);//接收用户的输入密码int Stringlength=strlen(String);if(Stringlength==4)//判断输入的数是否超位{if(strcmp(String,"1234")==0)//设定的密码是:1234{printf("密码正确");}else{printf("密码错误");}}else{printf("格式错误!你输入了%d位的密码",Stringlength);}return 0;}
法2:对局部变量进行初始化赋值
#include #include int main()//这是个运动会奖牌数目统计{int n,z;//count1表示金牌数目 , 以此类推count2,count3表示银牌 , 铜牌int count1=0,count2=0,count3=0;//这里对局部变量进行初始化赋值printf("请输入运动会天数:");scanf("%d",for(int i=0;i
推荐阅读
- 大一非计算机专业的学生,如何利用寒假自学C语言
- 三星手机诡异Bug:进入2021年 电池统计不见了
- 为什么我喜欢C语言,却非常讨厌C++?一位国外程序员的回答
- 服务器宕机,商城Bug,封杀第三方无线充,苹果这是怎么了?
- Java语言会不会随着容器的兴起而衰落
- Win10又爆出蓝屏死机Bug,如何修复它?
- 30款万年笔的推荐人气排名男性/女性/初学者/ 2020
- 大数据专业本科生选择主攻Python语言,如何提升就业竞争力
- 获评IDC 报告7项第一,阿里语音语言AI领跑云厂商
- 苹果确认M1处理器大Bug:分辨率太尴尬