测试代码00:
#include<stdio.h>
int main()
{
int a = 0, b = 0;
scanf("%d %d", &a, &b);
int c = 0;
c = a + b;
return 0;
}
一、
一号图:
我在c = a+b;这行前面设置一个断点,如何设置断点呢?就只需要把你的鼠标放在行号8上,点击一下8,你就发现8上面多了一个红色的小勾,并且当先行也会变红,这样你就成功设置了一个断点
二号图:
然后我按下F9,把这个程序编译一下,记住必须编译之后才能进行调试
三号图:
然后点击调试
四号图:
点击添加查看
五号图:
比如我要查看变量c的值
六号图:
你发现左边的框里出现了变量c
七号图:
现在点击调试
八号图:
现在点击调试
九号图:
接下来你输入两个整数,中间用空格分隔开,并且按下回车键
十号图:
你再回到我们的devcpp,点击下一步
十一号图:
看到了吧,现在机器执行完了第8行,停留在了第9行前面,左边的c的值也变为了13,这就是调试的好处,你可以一行一行执行,并且每次执行完,你左边的框里添加的要查看的变量的值就会跟着改变(当然,你要是没有对他的值进行改变,他就不变)
十二号图:
后面没有关键性的步骤,直接按跳过即可,那么我们的调试也就完成了
二、
我们还可以用调试来证明另一件事
十三号图:
假如我没有对变量a,b,c初始化为0,就像图中的情况,我只是定义了a,b,c三个变量,并没有对他们进行赋值,那么我们一会儿在程序运行过程中,他们的值会怎么样呢?
十四号图:
首先,我们在第八行前面设置一个break(断点),如何设置断点呢?你就在那个8那里点一下就行
十五号图:
我们此时还是按下F9对我们的程序进行一个编译
十六号图:
好的,我们没有warning(警告),也没有error(错误),非常nice
十七号图:
接下来我们还是点击我们的调试
十八,十九,二十号图:
我们点击添加查看,分别输入a,b,c
二十一号图:
然后产生上图的效果
二十二号图:
接下来点击调试
二十三号图:
没错又是我们的黑哥
二十四号图:
然后我们输入两个整数,比如5和6,中间空格隔开,然后回车
(我这里不知道为啥,好像得按两下回车才行,不知道是不是我这个代码输入那块是不是有点小bug)
二十五号图:
好,现在就出现了我们想看的东西,
1.左边的查看栏分别显示出了a,b,c三个变量的值,a和b很好理解,就是5和6,但是关键是c的值,你发现c的值为0,这说明什么?先往下看
2.我们发现我们的机器现在执行完了第7行,还未执行第8行
3.我现在来解释c为什么为0,我刚才说了机器已经执行完了第7行,就是说我们已经定义了整型变量c,但是并没有给这个变量c赋值(也就是初始化),那你想想c的值是不是一个任意的值?没错,c就应该是一个任意值,但是为什么这里c的值为0呢?那是因为devcpp把这个值赋赋为0了,如果说你用的是别的IDE(就是说用的环境不同),比如说是vscode,那这个c的值会是0还是一个任意的值呢?这里我可以告诉你,至少在win系统下的vscode里c的值还是0,因为我试过。那你又要问,那如果是在别的IDE下呢?
那我就不能这么确切的告诉你了,因为我没试过。
小结一下,这个没有从初始化的变量c的值是不确定的,在不同的电脑中,不同的IDE下,c的值是不确定的,只不过devcpp和vscode这两款IDE帮你把他初始化为0了,所以我这里建议以后若是需要初始化一个变量的值为0,不要等着编辑器去帮你初始化为0,最好自己手动给变量初始化为0
二十六号图:
当我们点击完下一步时,c的值就变为了11,没毛病。
接下来点击跳过,那么我们的调试就完成了。
总结一下,
第一,调试就是可以帮助我们在程序编译后或运行后出现错误,帮助我们查看变量的值的一个功能,当然这个过程你也完全可以手动转化为代码,人工调试,今天在这我就不说这种方法了,你也可以自己尝试着这么干
第二,定义变量时,你若需要让一个变量的值为0,请用你高贵的双手手动把=0加在后面,不要等着你的IDE帮你完成这项工作