程序调试与常见程序错误

合集下载

程序调试和错误解决的方法与技巧

程序调试和错误解决的方法与技巧

程序调试和错误解决的方法与技巧程序调试是软件开发中不可或缺的一个环节,它可以帮助开发者发现和解决程序中的bug和错误,确保程序的质量和稳定性。

程序调试需要一定的方法和技巧,本文将就程序调试和错误解决的方法与技巧进行详细介绍。

一、程序调试的重要性程序调试是软件开发中的一个非常重要的环节,它决定了最终产品的质量和稳定性。

程序中的bug和错误可能会导致程序崩溃或者产生不正确的结果,从而影响用户体验和产品的形象。

因此,及时发现和解决bug和错误对于保证软件的质量至关重要。

二、程序调试的方法1.打印调试打印调试是最简单有效的调试方法之一。

开发者可以在程序中加入一些打印语句,输出程序的执行状态和关键变量的数值。

通过打印调试可以很快发现程序中的问题,具有较高的实时性。

但是打印调试可能会导致程序输出过多的信息,不便于分析和定位问题。

2.断点调试断点调试是一种比较直观的调试方法。

开发者可以在程序中设置断点,当程序执行到断点处时就会停下来,可以查看程序的当前状态和变量的数值。

通过断点调试可以更加清晰地观察程序的执行流程和变量的变化,有助于快速定位问题。

但是断点调试需要开发者花费较多的时间和精力来设置和管理断点,对程序的运行速度有一定的影响。

3.单步调试单步调试是一种逐行执行程序的调试方法。

开发者可以一步一步地执行程序,观察每一步的执行结果和变量的变化。

通过单步调试可以清晰地了解程序的执行流程,及时发现和解决问题。

但是单步调试需要开发者花费较多的时间和精力,不适用于大规模的代码调试。

4.异常捕获异常捕获是一种通过捕获程序抛出的异常来进行调试的方法。

开发者可以在程序中加入异常处理的代码,当程序出现异常时就可以捕获异常并进行相应的处理。

通过异常捕获可以很快地发现程序中的问题,有助于保证程序的稳定性。

但是异常捕获需要开发者对程序的执行流程有一定的了解,不适用于对程序整体的调试。

5.使用调试工具调试工具是一些专门用来辅助程序调试的软件,如IDE中的调试器、代码覆盖率工具、检查内存泄漏的工具等。

程序调试和错误解决的方法与技巧

程序调试和错误解决的方法与技巧

程序调试和错误解决的方法与技巧程序调试和错误解决是软件开发过程中非常重要的环节,它涉及到对程序代码、逻辑和运行时错误进行诊断和修复。

在软件开发过程中,程序调试是必不可少的一部分,它有助于发现和修复潜在的问题,从而确保程序的稳定性和可靠性。

本文将介绍程序调试和错误解决的方法与技巧,希望能够对读者有所帮助。

一、程序调试的方法1.使用调试工具调试工具是程序员调试代码的利器,它能够帮助程序员定位问题的所在,跟踪代码的执行过程,监控变量的数值等。

常见的调试工具有GDB、LLDB、Visual Studio Debugger等,它们都提供了丰富的功能,能够帮助程序员高效地调试程序代码。

2.打印调试信息在代码中插入一些打印语句,输出变量的数值、函数的调用情况等信息,有助于程序员了解程序的执行过程,找到问题的所在。

虽然这种方法比较原始,但在一些情况下还是非常有效的。

3.使用断点在需要调试的地方设置断点,当程序执行到断点时会被暂停,程序员可以通过查看变量的数值、单步执行代码等方式进行调试。

使用断点能够帮助程序员快速定位问题,提高调试效率。

4.使用日志在程序中加入日志信息,记录程序的运行情况,有助于程序员了解程序的执行流程,从而找到问题的所在。

日志是一种非常好的调试手段,它能够帮助程序员在没有调试工具的情况下进行调试。

二、错误解决的技巧1.理解错误信息当程序出现错误时,通常会有错误信息显示在屏幕上,程序员应该认真阅读错误信息,理解错误的原因,从而有针对性地进行修复。

错误信息通常会包含错误类型、错误位置等信息,对程序员来说是一种非常宝贵的调试信息。

2.逐步排查在解决错误的过程中,程序员应该采取逐步排查的方法,从错误信息、问题描述开始,逐步缩小错误的范围,最终找到问题的所在。

这样能够避免盲目地修改代码,提高修复错误的效率。

3.参考文档和资料在解决错误的过程中,程序员可以参考相关的文档和资料,了解程序的运行原理、语法规则等信息,有助于帮助程序员理解问题的所在,从而更好地解决错误。

程序调试与错误处理:常见错误的排查与修复技巧

程序调试与错误处理:常见错误的排查与修复技巧

程序调试与错误处理:常见错误的排查与修复技巧程序调试是软件开发过程中非常重要的一环,它帮助开发人员找出和修复代码中的错误,确保程序能够正常运行。

在本文中,我们将介绍常见错误的排查与修复技巧,帮助开发人员更有效地进行调试工作。

一、常见错误的排查技巧1.错误信息分析:在程序出现错误时,开发人员应该首先查看错误信息。

错误信息通常会提供一些有用的提示,例如错误的位置、错误的类型以及可能的原因等。

通过仔细分析错误信息,开发人员可以更快地定位到问题所在。

2.代码逐行排查:如果错误信息并不明确,开发人员应该逐行检查代码,查找潜在的错误。

这个过程需要细心和耐心,要注意一些常见的语法错误、拼写错误、变量命名错误、逻辑错误等。

3.使用日志:在调试过程中,开发人员可以在关键代码位置加入日志输出语句,以便了解程序的运行情况。

通过查看日志,开发人员可以追踪程序的执行路径,找出错误产生的原因。

4.分步调试:分步调试是调试过程中非常有用的工具。

开发人员可以在关键代码位置设置断点,然后一步一步地执行程序,观察变量的值和执行路径。

通过分步调试,开发人员可以更直观地了解程序的执行过程,找出错误所在。

5.利用调试工具:现代的集成开发环境通常提供了强大的调试工具,例如断点调试、变量监视、堆栈跟踪等。

开发人员可以利用这些工具来辅助调试,更快地定位和修复错误。

二、常见错误的修复技巧1.语法错误修复:语法错误是开发过程中常见的错误之一。

当编译器或解释器报告语法错误时,开发人员应该仔细检查错误所在位置的代码,并修正错误的语法。

2.逻辑错误修复:逻辑错误是开发过程中比较难以排查和修复的错误之一。

针对逻辑错误,开发人员通常需要分析程序的逻辑思路,反复检查条件语句、循环语句和逻辑运算符等,并进行相应的调整。

3.边界条件处理:边界条件是指程序在特定输入或特定情况下可能产生错误的条件。

开发人员应该针对各种可能的边界条件进行充分的测试,并修复可能产生的错误。

C语言常见错误分析和程序调试

C语言常见错误分析和程序调试

C语言常见错误分析和程序调试C语言是一种常见的编程语言,在使用的过程中,常常会出现一些错误。

本文将分析C语言常见的错误,以及如何进行程序调试。

1.语法错误:语法错误是最常见的错误类型之一、它通常是由于拼写错误、缺少分号或括号不匹配等简单的错误导致的。

解决方法是仔细检查代码,确保所有括号都是成对且正确使用,并及时修正拼写错误。

2.逻辑错误:逻辑错误是指程序的逻辑错误,即程序没有按照预期的方式执行。

这种错误很难被编译器检测到,需要程序员自己进行调试。

解决方法一是使用printf语句来输出变量的值,以观察程序的执行过程;二是使用调试工具,如GDB,来逐步执行程序并观察变量的值。

3.内存错误:内存错误是指在程序中使用了未分配或已释放的内存。

这种错误通常会导致程序崩溃或产生不可预测的结果。

解决方法是保证正确地使用内存函数,如malloc和free,并养成好的编程习惯,即分配内存时要确保及时释放。

4.数组越界:数组越界是指程序访问了数组范围之外的元素。

这种错误可能会导致程序崩溃或产生不可预测的结果。

解决方法是仔细检查数组的索引,并确保索引的值在合法范围内。

5.变量未初始化:未初始化的变量可能包含随机的垃圾值,从而导致程序的不稳定或不可预测的结果。

解决方法是在使用变量之前,先给变量赋初始值。

6.常量溢出:常量溢出是指常量值超过了其数据类型的范围。

解决方法是使用合适的数据类型,并确保常量值在其范围之内。

7.函数调用错误:函数调用错误可能是函数名拼写错误、函数参数类型不匹配或函数调用位置错误等。

解决方法是仔细检查函数名的拼写,确保函数参数与定义一致,并确保函数调用位置正确。

总之,在编写C语言程序时,应该注意避免语法错误,正确使用内存函数和数组索引,初始化变量,选择合适的数据类型,并仔细检查函数调用。

此外,对于逻辑错误,可以通过打印输出和调试工具来进行程序调试,帮助定位问题并解决错误。

第16章 常见错误和程序调试-精选文档

第16章 常见错误和程序调试-精选文档

-215~215-1,即-32768~32767。常见这样的程序 段: int num; num=89101; printf("%d",num); • 得到的却是23565,原因是89101已超过32767。两 个字节容纳不下89101,则将高位截去。见图16.1。 即将超过低16位的数截去。即将89101减去216(即 16位二进制所形成的模)。89101-65536=2其他字符必须按原样输入。因此,应按以下方 法输入: 3, 4 此时如果用“34”反而错了。还应注意,不能企图 用 scanf("input a & b:%d,%d",&a,&b); 想在屏幕上显示一行信息: input a & b: 然后在其后输入a和b的值,这是不行的。这是由 于有的读者以为scanf具有BASIC语言中的INPUT 语句的功能(先输出一个字符串,再输入变量的值)。 如果想在屏幕上得到所需的提示信息,可以另加 一个printf函数语句:printf("input a & b:");
• C要求对程序中用到的每一个变量都必须定义其 类型,上面程序中没有对x、y进行定义。应在函 数体的开头加int x,y;这是学过BASIC和 FORTRAN语言的读者写C程序时常见的一个错误。 在BASIC语言中,可以不必先定义变量类型就可 直接使用。在FORTRAN中,未经定义类型的变 量按隐含的I-N规则决定其类型,而C语言则要求 对用到的每一个变量都要在本函数中定义(除非已 定义为外部变量)。 • (2) 输入输出的数据的类型与所用格式说明符不一 致。 • 例如,若a已定义为整型,b已定义为实型。
16.1 常见错误分析
• 下面将初学者在学习和使用C语言(不包括C++)时 容易犯的错误列举出来,以起提醒的作用。这些 内容在以前各章中大多已谈到,为便于查阅,在 本章中集中列举,供初学者参考,以此为鉴。 • (1) 忘记定义变量。如: main( ) {x=3; y=6; printf("%d\n ",x+y); }

程序调试和错误解决的方法与技巧

程序调试和错误解决的方法与技巧

程序调试和错误解决的方法与技巧引言在软件开发的过程中,程序调试和错误解决是不可避免的问题。

无论是初学者还是资深程序员都会遇到各种难题,程序调试和错误解决成为了程序员成长的必要经验。

在本文中将会讨论程序调试和错误解决的方法和技巧,希望能给读者提供帮助。

一、程序调试的意义程序调试是程序开发的重要过程之一。

程序员要通过调试来确保程序的正确性,并调整程序使其达到预期的功能。

通过程序调试可以找出程序中的错误、缺陷和漏洞,从而有利于提高程序的稳定性和可靠性。

二、调试工具的选择在程序调试的过程中,选择合适的调试工具是非常重要的。

常用的调试工具有断点、输出调试信息、查看内存以及使用调试器等。

1.断点断点是程序调试中最常用也是最基本的方法之一。

在需要调试的代码处设置断点,程序在执行到该处时就会停止执行,这样可以逐步检查程序的执行过程,找出错误所在之处。

2.输出调试信息输出调试信息是调试过程中另外一种非常有用的方法,可以通过向控制台或者日志文件中输出调试信息来辅助调试。

通过输出调试信息可以查看程序运行的状态,发现错误所在之处。

3.查看内存在程序调试过程中,可能会发生内存泄漏等问题,这时候就需要使用查看内存的功能。

可以通过查看内存来监控程序的内存使用情况,发现内存泄漏的问题,并及时解决。

4.使用调试器调试器是一种十分实用的调试工具。

它可以在程序运行的过程中停止程序的执行,查看各个变量的值以及程序的执行状态,从而快速定位问题所在之处。

三、程序调试的技巧程序调试除了使用调试工具外,还需要掌握各种针对性的技巧。

以下是几种常见的程序调试技巧。

1.手动检查程序逻辑在程序编写的过程中往往有时候会因为逻辑方面的问题导致程序执行出错。

在这种情况下,需要手动检查程序的逻辑,看是否存在问题。

手动检查程序逻辑是程序员的基本功,需要注重平时的练习,提高自己的程序设计能力。

2.不要盲目删除代码在程序调试的过程中,很多程序员会因为误解而盲目删除代码,这样往往会给问题的解决带来更大的困难。

数控编程中的程序调试与错误排查方法

数控编程中的程序调试与错误排查方法

数控编程中的程序调试与错误排查方法在数控编程中,程序调试与错误排查是非常重要的环节。

一旦出现错误,可能会导致机床运行异常甚至损坏工件。

因此,程序员需要掌握一些调试和排查错误的方法,以确保程序的正确运行。

一、调试方法1. 逐行调试:这是最常用的调试方法之一。

程序员可以逐行查看程序的执行过程,通过观察每一行代码的执行结果,找出错误所在。

在调试过程中,可以使用断点功能,使程序在某一行暂停执行,以便程序员观察程序的运行情况。

2. 输出调试:在程序中添加一些输出语句,将程序中的关键变量的值输出到屏幕上,以便程序员可以观察变量的取值情况。

通过观察输出结果,可以判断程序是否按照预期执行。

3. 二分法调试:当程序较长或复杂时,可以采用二分法调试的方法。

将程序分为两部分,先调试其中一部分,如果没有错误,则说明错误在另一部分;如果有错误,则继续将有错误的部分二分,逐步缩小错误范围,直到找到错误所在。

二、错误排查方法1. 检查输入数据:在程序中,输入数据是非常重要的。

程序员需要仔细检查输入数据的格式、范围等是否符合要求。

如果输入数据有误,可能会导致程序运行错误。

2. 检查变量赋值:程序中的变量赋值也是容易出错的地方。

程序员需要检查变量的赋值是否正确,是否遗漏了某些赋值操作。

3. 检查循环和条件语句:循环和条件语句是程序中常用的控制结构。

程序员需要仔细检查循环和条件语句的逻辑是否正确,是否有遗漏或多余的条件。

4. 检查函数调用:在程序中,函数的调用是常见的操作。

程序员需要检查函数的调用是否正确,是否传递了正确的参数,是否返回了正确的结果。

5. 检查数学运算:数学运算是程序中常见的操作。

程序员需要仔细检查数学运算的公式是否正确,是否有遗漏或错误的运算符。

6. 检查语法错误:语法错误是编程中常见的错误之一。

程序员需要仔细检查程序中的语法是否正确,是否有遗漏或错误的括号、分号等。

总结起来,数控编程中的程序调试与错误排查方法包括逐行调试、输出调试、二分法调试等。

程序调试技巧与错误排查的实操方法与经验总结

程序调试技巧与错误排查的实操方法与经验总结

程序调试技巧与错误排查的实操方法与经验总结Chapter 1: 程序调试技巧的概述程序调试是软件开发过程中非常重要的一环。

无论是专业的软件工程师还是初学者,调试程序都是不可避免的任务。

在本章中,我们将介绍调试的概念、重要性以及一些常用的调试技巧。

1.1 调试的概念调试是指在软件开发过程中,通过观察、分析和修复代码中的错误或异常,以确保程序的正确性和稳定性的过程。

调试的目的是找出程序中的bug,并对其进行修复。

1.2 调试的重要性调试是软件开发过程中至关重要的一部分。

通过调试,我们可以追踪程序执行的过程,查找bug并修改代码。

调试的目的不仅是修复错误,还可以提高程序的性能、降低资源消耗和优化算法。

正确而高效的调试可以极大地提高开发效率。

1.3 常用的调试技巧下面介绍一些常用的调试技巧,帮助我们更快地找到并修复程序中的错误。

1.3.1 打印调试信息在程序中合理地插入打印语句,输出变量的值和一些关键信息,有助于了解程序的执行流程。

通过观察输出结果,我们可以判断变量是否正确地被赋值,是否满足预期的条件。

同时,合理的打印调试信息也可以帮助定位问题所在。

1.3.2 使用断点调试器断点调试器是调试程序的重要工具之一。

通过设置断点,我们可以使程序在特定位置停下来,查看当前变量的值、观察程序执行的路径。

在调试器中,可以单步执行代码、查看每一步的变量值,有助于分析代码执行过程,找出错误所在。

1.3.3 分析日志文件在程序运行过程中,可以将关键信息记录在日志文件中,方便后续分析。

日志文件可以记录程序的执行过程、关键变量的值以及异常信息等。

通过仔细分析日志文件,我们可以揭示程序运行中的潜在问题。

Chapter 2: 错误排查的实操方法与经验总结错误排查是调试过程中的关键环节。

在本章中,我们将介绍一些错误排查的实操方法和经验总结,帮助我们更快地找到并修复程序中的错误。

2.1 确定错误类型首先,需要确定错误的类型。

常见的错误类型有语法错误、逻辑错误、运行时错误等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序调试与常见程序错误目录一、在Codeblocks中调试程序 (1)二、存储路径设置问题 (4)三、修改Codeblocks的设置 (4)四、提示程序无法调试问题 (6)五、常见错误分析 (6)六、程序出错的三种情况 (18)七、常用的纠错方式 (19)一、在Codeblocks中调试程序1.注意事项不允许工程路径中含有空格、汉字。

2.在相应行号后面点击鼠标左键设置断点3.打开W ATCHS窗口4.点击调试按钮5.可以再watchs窗口看到自动变量。

黄色三角表示程序暂停的位置6.通过单步运行按钮进行单步运行。

7.也可以在debuger标签,command栏输入调试命令进行单步运行、打印变量值等操作。

8.程序运行二、存储路径设置问题1. 如果不是默认安装路径,code blocks 就无法找到编译器和调试器,就会出现此类问题。

解决办法:Settings——Compiler and debugger——Toolchain executables——Auto-detect。

2. 输出信息为“某个命令执行失败或异常终止”。

解决方法:通常是相应的编译器找不到,试着将其所在路径放到path环境变量中去。

3. 输出编译错误,如某某文件找不到之类。

解决方法:在项目中设置选项中加上路径(通常可利用customer variable项)。

4. 在调试程序的时候弹出类似""XYZ - Debug": The compiler's setup (GNU GCC Compiler)is invalid, so Code::Blocks cannot find/run the compiler.Probably the toolchain path within the compiler options is not setup correctly?!Goto "Settings->Compiler and debugger...->Global compiler settings->GNU GCC Compiler->Toolchain executables" and fix the compiler's setup.Skipping...Nothing to be done (all items are up-to-date)."这种警告。

解决方法:这个错误提示已经说得很清楚了, 找不到编译器, 到菜单Settings->Compiler and debugger...->Global compiler settings->GNU GCC Compiler->Toolchain executables下去修复编译选项前提是你已经装了gcc如过没装, 就去下个包含mingw的codeblocks, (mingw包含gcc编译器);三、修改Codeblocks的设置1.2.3.4.四、提示程序无法调试问题多次调试一个程序时出现"cannot open output film D:\c++\文件名.exe Permission denied"解决方法:启动任务管理器,找到文件.exe关闭就可以了。

五、常见错误分析1.忘记定义变量。

例如:main(){x=3;y=6;printf("%d\n",x+y);}C要求对程序中用到的每一个变量都必须定义其类型,上面程序中没有对x、y进行定义。

应在函数体的开头加int x,y;这是学过BASIC和FORTRAN语言的读者写C程序时常见的一个错误。

在BASIC语言中,可以不必先定义变量类型就可直接使用。

在FORTRAN 中,未经定义类型的变量按隐含的I-N规则决定其类型,而C语言则要求对用到的每一个变量都要在本函数中定义(除非已定义为外部变量)。

2.输入输出的数据的类型与所用格式说明符不一样。

例如:若a已定义为整型,b已定义为实型。

a=3;b=4.5;printf("%f%d\n",a,b);编译时不给出出错信息,但运行结果将与原意不符,输出为0.00000016402它们并不是按照赋值的规则进行转换(如把4.5转换成4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节中的数据按%d,作为整数输出)。

3.未注意int型数据的数值范围。

例如:一般微型计算机上使用的C编译系统,对一个整型数据分配两个字节。

因此一个整数的范围为-215~215-1,即-32768~32767。

常见这样的程序段:int num;num=89101;printf("%d",num);得到的却是23565,原因是89101已超过32767。

两个字节容纳不下89101,则将高位截去。

即将超过低16位的数截去。

即将89101减去216(即16位二进制所形成的模)。

89101-65536=23565。

有时还会出现负数。

例如num=196607;输出得-1。

因为196607的二进制形式为00 00 00 00 00 00 00 1011 11 11 11 11 11 11 11去掉高位10,低16位的值是-1(-1的补码是:1111111111111111)。

对于超过整个范围的数,要用long型,即改为long int num;num=89101;printf("%ld",num);请注意,如果只定义num为long型,而在输出时仍用“%d”说明符,仍会出现以上错误。

4.在输入语句scanf中忘记使用变量的地址符。

例如:scanf("%d%d",a,b);这是许多初学者刚学习C语言时一个常见的疏忽,或者说是习惯性的错误,因为在其他语言中在输入时只需写出变量名即可,而C语言要求指明“向哪个地址标识的单元送值”。

应写成scanf("%d%d",&a,&b);5.输入时数据的组织与要求不符。

例如:用scanf函数输入数据,应注意如何组织输入数据。

假如有以下scanf函数:scanf("%d%d",&a,&b);有人按下面的方法输入数据:3,4这是错的。

数据间应该用空格来分隔。

读者可以用printf("%d%d",a,b);来验证一下。

应该用以下方法输入:34如果scanf函数为scanf("%d,%d",&a,&b);对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输入。

因此,应按以下方法输入:3,4此时如果用“34”反而错了。

还应注意,不能企图用scanf("input a & b:%d,%d",&a,&b);想在屏幕上显示一行信息:input a & b:然后在其后输入a和b的值,这是不行的。

这是由于有的读者以为scanf具有BASIC语言中的INPUT语句的功能(先输出一个字符串,再输入变量的值)。

如果想在屏幕上得到所需的提示信息,可以另加一个printf函数语句:printf("input a & b:");scanf("%d,%d",&a,&b);6.误把“=”作为“等于”运算符。

例如:在许多高级语言中,用“=”符号作为关系运算符“等于”。

例如,在BASIC或PASCAL 程序中都可以写if(a=b)then…但在C语言中,“=”是赋值运算符,“==”才是关系运算符“等于”。

如果写成if(a=b)printf("a equal to b");C编译系统将(a=b)作为赋值表达式处理,将b的值赋给a,然后判断a的值是否零,若为非零,则作为“真”;若为零作为假。

如果a的值为3,b的值为4,a≠b,按原意不应输出“ae q u a lt ob”。

而现在先将b的值赋给a,a也为4,赋值表达式的值为4。

if语句中的表达式值为真(非零),因此输出“ae q u a lt o b”。

这种错误在编译时是检查不出来的,但运行结果往往是错的。

而且由于习惯的影响,程序设计者自己往往也不易发觉。

7.语句后面漏分号。

例如:C语言规定语句末尾必须有分号。

分号是C语句不可缺少的一部分。

这也是和其他语言不同的。

有的初学者往往忘记写这一分号。

如:a=3b=4编译时,编译程序在“a=3”后面未发现分号,就把下一行“b=4”也作为上一行的语句的一部分,这就出现语法错误。

有时编译时指出某行有错,但在该行上并未发现错误,应该检查上一行是否漏了分号。

如果用复合语句,有的学过PASCAL语言的读者往往漏写最后一个语句的分号,如:{t=a;a=b;b=t}在PASCAL中分号是两个语句间的分隔符而不是语句的一部分,而在C中,没有分号的就不是语句。

8.在不该加分号的地方加了分号。

例如:if(a>b);printf("a is larger than b\n");本意为当a>b时输出“a is larger than b”的信息。

但由于在if(a>b)后加了分号,因此if语句到此结束。

即当(a>b)为真时,执行一个空语句。

本来想a≤b时不输出上述信息,但现在printf函数语句并不从属于if语句,而是与if语句平行的语句。

不论a>b还是a≤b,都输出“a is larger than b”。

又如:for(i=0;i<10;i++);{scanf("%d",&x);printf("%d\n",x*x);}本意为先后输入10个数,每输入一个数后输出它的平方值。

由于在for()后加了一个分号,使循环体变成了空语句。

只能输入一个整数并输出它的平方值。

总之,在if、for、while语句中,不要画蛇添足多加分号。

9.对应该有花括号的复合语句,忘记加花括号。

例如:sum=0;i=1;while(i<=100)sum=sum+i;i++;本意是实现1+2+…+100,即∑i。

但上面的语句只是重复了sum+1的操作,而且循环永不终止。

因为i的值始终没有改变。

错误在于没有写成复合语句形式。

因此while语句的范围到其后第一个分号为止。

语句“i++;”不属于循环体范围之内。

应改为while(i<=100){sum=sum+i;i++;}10.括号不配对。

例如:当一个语句中使用多层括弧时常出现这类错误,纯属粗心所致。

相关文档
最新文档