什么时候需要对C语言程序进行调试
所谓程序调试,是指当程序的工作情况(运行结果)与设计的要求不一致——通常是程序的运行结果不对时,科学地(而不是凭偶然的运气)通过一定的方法、使用一定的手段来检查程序中存在的设计问题(某种逻辑错误而不是语法、链接错误,修正语法、链接错误不是调试程序要做的事)。
当程序编译出错或者链接出错时,系统都将在Output输出窗口中随时显示出有关的提示信息或出错警告信息等(如果是编译出错,只要双击Output窗口中的出错信息就可以自动跳到出错的程序行,以便仔细查找)。但若编译和链接都正确,而执行结果又总是不正确时,这时就需要使用调试工具来帮着“侦察”出程序中隐藏着的出错位置(某种逻辑错误)。
强调:初学者常犯的错误是认为“编译和链接”都正确,程序就应该没有问题,怎么会结果不对呢?“编译和链接”都正确,只能说明程序没有语法和拼写上的错误,但在算法(逻辑)上有没有错,还得看结果对不对。反过来讲,无论让你设计一个什么样的程序,你都只写以下几行,则“编译和链接”肯定都正确,但能实现设计的要求吗?
事实上,程序设计的重点完全不是修正编译和链接过程中的错误——相对而言,这种工作基本没有技术含量,程序设计的主要工作是设计正确的算法。
当程序编译出错或者链接出错时,系统都将在Output输出窗口中随时显示出有关的提示信息或出错警告信息等(如果是编译出错,只要双击Output窗口中的出错信息就可以自动跳到出错的程序行,以便仔细查找)。但若编译和链接都正确,而执行结果又总是不正确时,这时就需要使用调试工具来帮着“侦察”出程序中隐藏着的出错位置(某种逻辑错误)。
强调:初学者常犯的错误是认为“编译和链接”都正确,程序就应该没有问题,怎么会结果不对呢?“编译和链接”都正确,只能说明程序没有语法和拼写上的错误,但在算法(逻辑)上有没有错,还得看结果对不对。反过来讲,无论让你设计一个什么样的程序,你都只写以下几行,则“编译和链接”肯定都正确,但能实现设计的要求吗?
#include <stdio.h> void main(){ printf("Hello World!\n"); }
事实上,程序设计的重点完全不是修正编译和链接过程中的错误——相对而言,这种工作基本没有技术含量,程序设计的主要工作是设计正确的算法。