一、语法错误及调试 (1)、编译器报告的错误位置,有时会有偏离。 (2)、编译器常常会针对某个错误,发出一系列的错误信息报告。 常见的语法错误: 1、语句末尾漏写分号; 2、使用未经定义的变量; 3、括号不匹配; 4、字符串没有结束符; 5、赋值号左面不是变量; 6、非void类型的函数缺少return语句; 7、没有在printf中指定输出项对应的输出格式; 8、在scanf函数中要么在格式串中使用了非格式字符,要么在格式串中没有使用格式符,要么在输入项的变量前没有使用地址运算符。二、语义及逻辑错误及其调试 (1)、语义错误指程序对程序中的语义的理解与编译器理解的不同; (2)、逻辑错误指程序在算法上出现错误。 常见的语义错误: 1、赋值号与等号用错; 2、无限循环; 3、在if、where或for结构后面使用多余的分号; 4、错误地使用了关系运算符; 5、计算或将一个大类型的数转换成小类型时,数据的值超出了表示范围; 6、运算符优先顺序错; 7、else搭配不当; 8、off-by-one(偏一)错误,通常指for循环的次数多或少一次; 9、将无关代码放到循环体中; 10、使用整数除法。三、语义错误的发现与调试: 语义调试的方法:手工跟踪法和工具法。 手工跟踪法: 1、在if-else语句的前后显示关键变量的值; 2、循环开始的前后和循环结构的前后显示,如关键变量的值和循环变量的值; 3、每次进入函数前后所有参数的变化,每次退出函数前后所有参数的变化。

评论