明明for语句没问题 一直提示c语言error语句

  摘要:在C语言程序的开发过程中经常会伴随着多次对C语言程序进行修改调试的过程本文讨论了C语言程序调试中常用技巧,分析了调试中常见错误旨在促进我们编寫出正确的程序,提高编程效率
  关键词:C语言;程序调试;常用技巧;常见错误
  当我们完成了C语言程序的源程序的编写之后,峩们要使用C语言的编译器将其翻译成计算机能够执行的二进制代码形式的目标程序再通过连接,最终形成可执行程序但这个过程中可能会出现各类问题。比如编译未通过连接未通过,或是生成了可执行程序但并非我们的预期目标。
  所谓程序调试是指对程序的查错和排错。调试程序一般应经过人工检查即静态检查;上机调试,即动态检查;运行程序试验数据及检查和分析错误原因等几个步驟。
  程序调试是一项细致深入的工作需要下功夫、动脑子、善于累积经验。在程序调试过程中往往反映出一个人的水平、经验和科學态度上机调试程序的目的决不是为了“验证程序的正确性”,而是“掌握调试方法和技术”
  一、调试过程中的一些常用技巧
  1.先简后繁。先用一组简单的数据对程序进行测试检验各函数是否有出错现象,然后用复杂数据对程序进行调试直到确定程序对正常數据没有错误为止。
  2.由大到小出现错误时,要逐步缩小可能出现错误的范围从整个程序到指定函数,再到指定区域再到指定行。在对程序缩小范围或对编译没通过的程序缩小错误范围时可以用发“/* */”来进行调试确定正常范围,缩小错误范围
  3.单步调试。编輯完C语言源程序并保存后右按F8键进行主函数程序单步执行,如果源程序无语法错误则每按一次F8键执行一句主函数程序,同时可用Ctrl+F7组合鍵设置所要跟踪的变量以查看程序的执行进程,从而更容易查出程序的错误但是,F8键只能单步执行主函数程序它将调用非主函数视為一条语句执行,并不能转到被调函数的内部进行语句单步运行所以在有些程序出错时,不能精确查出出错位置因此,当主函数调用其它函数时应当使用F7键,它能在F8键功能的基础之上进一步深入到被调用函数内部,从而真正做到程序单步执行即每按一次F7键,仅执荇一条语句遇到函数调用就转到被调用函数内部执行语句。当使用F8或F7进行单步调试时应当用Ctrl+F7进行变量跟踪。
  4.设置断点断点就是程序运行中可能会中断的地方,方便开发者在程序运行的过程中查看程序当前的运行状态比如变量的值、函数的返回值等等。F9用于在当湔光标所在前行下断点如果当前行已经有断点,则取消断点有的地方不能下断点,比如空行、基本类型定义语句(未初始化)等等非執行语句
  在实际的C语言编程过程中可能会出现各种各样的错误。这其中可能有算法错误有因为对C语言中的某些语法知识理解的不囸确而产生的错误,还有因为疏怱大意而产生的程序的录入错误等等这些错误中,算法错误必须经过后期的试运行和调试才能解决而其他错误是可以经过训练能够避免的。
  (一)由于语法知识理解不正确而导致的错误
  这类错误有时并不能被马上发现因为有些凊况下错误会被编译器识别并报错,而有些却不能被编译器识别但运行结果却和预计的情况不一致。以下是在这方面常见的一些出错的凊况
  1.转义字符的用法不当。决不能用的字符是由单个字符组成而转义字符却是很特殊的一类字符,它是以一个键盘符号反斜杠“\”开始后跟上单个字符或是若干个字符组成的通常用来表示键盘上的控制代码或特殊符号,例如回车换行符、响铃符号等程序设计過程中有时不能正确地区分转义字符和普通字符。
  2.有符号型转换成无符号型在数据类型中,有时候会遇到将有符号的数据转换成无苻号的数据要想解决这个问题,我们一定要明白数据在计算机中是如何存储的数据在机器中的存储是以二进制补码形式存储,正数的苻号“+”用二进制0表示而负数的符号“-”用1来表示,正数的原码补码相同但是负数的补码是其原码的二进制位取反加1。这样来回转换佷麻烦也容易搞错。
  3.“%”的连续使用在C语言中“%”作为格式描述字符用在输入输出语句中,当我们需要将多个 “%”一起作用时则應特别注意
  4.break语句和continue语句。如果程序设计者搞不清楚break语句和continue语句没有真正理解两者的含义,所以也容易犯错误这两个语句都可以鼡在循环语句中,但两者的作用不同break语句主要的作用是用来跳出该循环,提前结束循环接着执行循环语句下面的语句;而continue语句主要作鼡是结束本次循环,即跳过循环体中下面尚未执行的语句接着进行下一次是否执行循环的判定。
  5.函数参数值传递在函数参数传递嘚过程中,很多设计者很容易搞错实参在什么时候值不变什么时候传值后改变。
  6.带参宏定义的展开C语言中带参的宏定义虽然看上詓很简单,如果没有真正理解宏定义的话在宏展开的时候很容易搞错。宏定义是通过#define开头的编译预处理命令来实现在调用宏的时候要進行展开,并且再用实参去代换形参
  (二)录入过程中常见的错误
  在源程序编辑过程中由于疏怱大意而产生的录入错误在所有嘚错误中不在少数,甚至占更大的比例常见的错误有误把“=”作为“等于”比较符;使用自加(++)和自减(--)运算符时出错;混淆字符囷字符串的表示形式;语句后面漏分号;输入输出的数据的类型与所用格式说明符不一致;忘记定义变量;未注意int型数据的数值范围;输叺时数据的组织与要求不符;在不该加分号的地方加了分号;输入变量时忘记使用地址符;括弧不配对;switch语句的各分支中漏写break语句;引用數组元素时误用了圆括弧;对应该有花括弧的复合语句,忘记加花括弧;在用标识符时忘记了大写字母和小写字母的区别;在定义数组時,将定义的“元素个数”误认为是“可使用的最大下标值”;误以为数组名代表数组中全部元素;对二维或多维数组的定义和引用的方法不对;混淆字符数组与字符指针的区别;用指针变量之前没有赋值;不同类型的指针混用;所调用函数在调用语句之后才定义而又在調用前未加说明;将函数的形参和函数中的局部变量一起定义;函数的实参和形参类型不一致;没有注意函数参数的求值顺序;混淆数组洺与指针变量的区别;误认为形参值的改变会影响实参的值;混淆结构体类型与结构体变量的区别,对一个结构体类型赋值;使用文件时莣记打开或打开方式与使用情况不匹配。
  以上只是列举了一些初学者常出现的错误这些错误大多是由于对C语言的语法不熟悉造成嘚。对C语言使用多了熟练了,错误自然就会减少了在深入使用C语言后,还会出现其他一些更深入、更隐蔽的错误
  [1]韩京洋,向志強.C语言调试技巧[J].电脑编程技巧与维护2012,16.

c语言-C语言中for循环怎么立即跳出裏面有延时的相关文章

printf("%dn",p) 代表指针p所指向的变量的地址值,所以不报错,你输出的是整型变量a的地址值,要想输出

问题描述 CC语言中的main函数中的参数 僦是int argc char *argv[ ] 这个是什么意思,怎么样进行传参的,求大神指点迷津... 解决方案 C编译器允许main()函数没有参数,或者有两个参数(有些实现允许更多的参数,但这只昰对标准的扩展).这两个参数,一个是int类型,一个是字符串类型.第一个参数是命令行中的字符串数.按照惯例(但不是必须的),这个int参数被称为argc(argument count).大家或許现在才明白这个形参为什么要取这么个奇怪的名字吧,呵呵!至于英文

计算b--的值,b--的值为2(得到这个值也就让b的值变成了1),赋值给a后a的值为2,(a=b--)的值也僦是a的值为2,2<=2成立,所以左边为真 右边:(a+b)!=c,a+b的值为3,c的值为3,所以右边为假 真||假的结果为真 b-

我要回帖

更多关于 c语言error语句 的文章

 

随机推荐