[VIP专享]C语言常见错误

合集下载

C语言常见错误解析

C语言常见错误解析

C语言常见错误解析:1)编译错误和运行错误:1,选择编辑的文件类型不是C语言。

如:文件扩展名不是.cpp, 而是.asp等。

重做。

错误提示:解析:编辑区上方的文件名的扩展名为:.asp是网站文件, 不是正常的.cpp文件。

当然编译菜单为灰色,无法编译。

2,做完一个程序后,没有关闭工作区,继续做下一个程序,编译系统无法确定编译多个主函数中的哪一个。

关闭工作区后,重做(这时,可使用复制粘贴方法)。

错误提示:解析:左边看出,有两个main()函数,原来的是t.cpp(工程名也是t), 现在的是li.cpp,可以编译,但不能运行。

每次运行的都是原来的程序t.exe.同时,可以看到,编译的主文件名li.cpp,与构件的文件名t.exe不相同。

3,编译系统本身故障。

编译菜单呈灰色,无法编译,按下ctl+alt+del三个键,在任务工作区,强制关闭VC,重新启动。

错误提示:略改正方法:按照正确的流程创建C语言源程序文件。

2)宏定义错误:引发语法错误错误原因:1,位置错误,宏定义错误放入函数内部;应在所有函数的前面。

错误提示:解析:遇到define,标志符出现错误,没有定义。

与函数体的语句定义格式不符。

2,缺少宏定义标志符“#”;错误提示:define pi 3.1415927解析:引起三个错误。

3,宏定义后面多加了分号“;”,误认为是语句;错误提示:语句,定义#define pi 3.1415927; 使用宏定义area=2*pi*banjing*banjing;解析:非法间接使用。

4,宏定义中库函数名错误:如sdtil.h, maths.h等错误提示:解析:不能打开stido.h文件,单引号中标志符’stido.h’错误。

5,宏定义中库函数引用标志错误:应使用一对尖括号或一对双引号<>或”“,不用函数标志圆括号( )错误提示:解析:#include中单引号中左圆括号‘(’使用错误,两函数没有定义。

C语言常见错误分析

C语言常见错误分析

C语言常见错误分析C语言是一门非常强大和灵活的编程语言。

然而,由于人为的错误或者语法错误,程序在编译或者运行的过程中常常会出现错误。

下面是常见的C语言错误以及它们的分析。

1.语法错误:语法错误是最常见的错误类型,也是最容易修复的错误。

它们包括缺少分号、括号不匹配、使用未定义的变量等。

这些错误通常会导致编译器的语法错误提示。

2.类型错误:类型错误是由于变量类型不匹配或者操作符错误而引起的。

例如,使用一个整数变量来存储浮点数值,或者将一个指针赋值给一个非指针类型的变量。

这些错误可能导致错误的计算结果或者报错。

3.逻辑错误:逻辑错误是程序的逻辑结构有误,导致程序无法正确执行。

这种错误通常不能通过编译器检测出来,而需要开发人员通过调试来找到并修复。

例如,程序的循环条件错误导致无限循环,或者条件判断错误导致程序走入错误的分支。

4.数组越界错误:数组越界错误是指访问数组时超出了数组的有效范围。

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

例如,访问数组元素时使用了一个超过数组长度的下标。

为了避免这种错误,开发人员应该始终确保数组下标在有效范围内。

5.空指针错误:空指针错误是指使用了一个未初始化或者已经释放的指针。

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

为了避免空指针错误,开发人员应该在使用指针之前初始化,并且在使用完毕后及时释放。

6.内存泄漏:内存泄漏是指程序在分配内存之后没有释放,导致系统中的可用内存越来越少。

如果内存泄漏严重,最终可能会导致程序崩溃或者系统变慢。

为了避免内存泄漏,开发人员应该始终确保在不再需要内存时及时释放。

7.死循环:死循环是指程序中的循环条件永远为真,导致程序陷入无限循环。

这种情况可能导致程序无法继续执行后续代码或者崩溃。

为了避免死循环,开发人员应该在循环中始终更新循环条件。

8.未处理的异常:异常是程序运行过程中可能发生的错误,它可能导致程序崩溃或者产生不可预测的结果。

为了避免未处理的异常,开发人员应该使用异常处理机制来捕获和处理异常。

C语言常见错误及解决方法

C语言常见错误及解决方法

C语言常见错误及解决方法(注:红色粗体是常见的错误,请大家检查自己的程序,并注意尽量不要犯这些常见的错误。

其余它体是避免错误的方法和正确的写法)一、基础知识和数据类型、表达式1、拼写错误,尤其是include,main,void,float等词。

C语言的32个关键字与基本含义如下:double :声明双精度变量或函数int:声明整型变量或函数char :声明字符型变量或函数float:声明浮点型变量或函数void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)auto :声明自动变量一般不使用struct:声明结构体变量或函数break:跳出当前循环else :条件语句否定分支(与if 连用)long :声明长整型变量或函数switch :用于开关语句case:开关语句分支enum :声明枚举类型register:声明积存器变量typedef:用以给数据类型取别名(当然还有其他作用)extern:声明变量是在其他文件正声明(也可以看做是引用变量)return :子程序返回语句(可以带参数,也看不带参数)union:声明联合数据类型const :声明只读变量short :声明短整型变量或函数unsigned:声明无符号类型变量或函数continue:结束当前循环,开始下一轮循环for:一种循环语句(可意会不可言传)signed:生命有符号类型变量或函数default:开关语句中的“其他”分支goto:无条件跳转语句sizeof:计算数据类型长度volatile:说明变量在程序执行中可被隐含地改变do :循环语句的循环体while :循环语句的循环条件static :声明静态变量if:条件语句2、{},[],(),‘’,“”不配对。

解决这个问题最好的方法就是每当写这些符号的时候就先写成一对,然后再在中间加内容。

3、忘记在语句的末尾加分号,或在预处理命令后多加分号。

记住:每一个语句的后边都要加分号,而预处理命令并不是语句,所以不加分号,他们必须每行一条,不能把多个命令写在一行。

C语言常见错误分析及解决方法

C语言常见错误分析及解决方法

C语言常见错误分析及解决方法C语言常见错误分析及解决方法C.C语言的应用很广泛,越来越多的程序员希望能够学好C由于C 语言的编译系统对语法的检查不如其他语言那么严格,因此C语.下面将C语言中初学者最常见的错误分析如下;1 语句书写错误由于大部分学生都是初次接触程序设计语言,缺乏程序设计的实践,对C语言语句又比较陌生,因此在编写程序时经常出现丢三落四、画蛇添足的情况.语句书写错误主要有:(1)语句结束未加分号或多加分号.C语言规定,分号作为语句的终止符,是语句中不可缺少的一部分.初学者经常忽略这个分号,如: main(); structdate{intyear;intmouth;intday;}{inta=1;……以上两段程序在编译时都会出错.第一段程序在定义结构体变量时,没有添加终止结构定义的“;”,第二段程序在函数定义中第一行的函数名后应该没有“;”.可见每一条语句的后边都要加分号,函数名后边不加分号.因此初学者要特别注意分号的使用.(2){},[],(),′′,″″不配对.解决这个问题最好的方法是在写这些符号的时候先成对书写,然后再在中间添加语句.(3)不该有空格的位置加了空格.例如,在关系运算符<=,>=,==,!=中,两个符号之间不允许有空格.对于以上错误,初学者要相当小心,C语言程序虽然书写格式自由,但这些细节不能忽视.那么解决语句类错误的方法是增强感性认识,加深理解,在思维方式上形成固定的语句模式.初学者要多读程序,阅读程序是学习C语言入门最快、最简洁的方法.特别是对于一些没有学过计算机语言的初学者,应该先阅读教材,学习它们的编程格式、编程风格,多看一些优秀代码,拓展自己的思维能力,开阔眼界.2 定义、初始化、引用方式错误此类错误涉及的是C语言的语法部分.语法是C语言的基础,只有掌握了语法,才能够编写程序.因此要求初学者熟悉C语言的每一个语法,并能根据这些语法来编程.那么C语言中常见的语法错误主要有: 211 使用未经过定义的变量例如:a,b;main(){a=1;b=5;收稿日期:2017—12—10作者简介:朱一峰(1983-),男,辽宁朝阳市人,助教,主要从事计算机教学研究.1994-2017 China Academic Journal Electronic Publishing House. All rights reserved. 朱一峰}a=1;B=5;printf(″%d\n″,a+b);} 41printf(″%d+%d=%d\n″,a,b,a+b);又如:main() {inta,b;以上两段程序在编译时都会出错.C语言要求对程序中用到的每一个变量都必须预先定义,并且严格区分大、小写英文字母.C语言程序习惯上使用小写英文字母,大写英文字母通常作为常量的宏定义和其他特殊的用途.212 数组的定义与引用方式不正确C语言规定,数组定义的形式采用“数组名+[常量表达式]式,不能出现变量或非整型值.(3(; (1)inta[j];(2)intx=10,b[x];(4)213 3pt=&a;int3pt,a;pt前面的“3”是一个指针声明符,表示是一个整形指针变量,在第二条语句中pt前面的“3”是指针运算符,也称为“间接引用运算符”,作用于指针变量,3pt表示指针变量pt所指向的存储空间,相当于变量a.另外,在使用指针前一定要对其进行初始化,否则系统在执行程序时会给出如下的信息:run-timeerrorR6001———nullpointerassigment或者引起更严重的错误使系统崩溃.214 定义函数时出现的错误如:);{printf(″insidesum\n″(1)intfun(inta,intb){intresult;result=a+b;}(2)intsum(void)intsum1(void));{printf(″insidesum1\n″}}在C语言中,函数有返回值时要有返回值语句,第一段程序缺少“return;”语句;一个函数的定义不能从属于另外一个函数,因此函数不能嵌套定义,第二段程序应将函数sum1定义在函数sum之外.解决语法类问题的最好办法是课上认真听讲、积极思考,课下多实践,具体做好以下几点.(1)养成良好的编程习惯.C语言的学习过程就是反复实践的过程,实践环节是非常重要的.要编出好的程序,就要通过上机操作来验证程序的正确性.多上机、勤上机不但可以提高个人反映速度、锻炼心理素质、增强心理承受能力,而且通过执行程序,初学者会发现程序中的错误,从而了解所学知识的不足,同时也能学会根据编译时系统提示的错误信息来改正程序中的错误.(2)学习C语言必须注意代码运行的细节.教材上的例子代码一定要自己动手上机运行一遍,编译、执行结果完全和教材上说的一致才算是学完一个例题,如果与教材不符,就要仔细查找出错原因.除了教材上现有的例子外,自己还要尽可能地“设计”一些程序,以便验证自己的想法是否正确.(3)初学者不要忽视课后习题,应该独立完成所有课后习题,然后参照习题答案中给出的代码,查看自己程序代码的不足,再修改自己的程序.大多初学者不重视习题的做法是错误的,因为作者通常会在习题中给出一些重要的编程思想,而不是简单的检验已学知识.3 混淆错误《C语言常见错误分析及解决方法》。

C语言编程中常见的五种错误及对应解决方案

C语言编程中常见的五种错误及对应解决方案

C语⾔编程中常见的五种错误及对应解决⽅案⽬录1. 未初始化的变量2. 数组越界3. 字符串溢出4. 重复释放内存5. 使⽤⽆效的⽂件指针前⾔:C 语⾔有时名声不太好,因为它不像近期的编程语⾔(⽐如 Rust)那样具有内存安全性。

但是通过额外的代码,⼀些最常见和严重的 C 语⾔错误是可以避免的。

即使是最好的程序员也⽆法完全避免错误。

这些错误可能会引⼊安全漏洞、导致程序崩溃或产⽣意外操作,具体影响要取决于程序的运⾏逻辑。

下⽂讲解了可能影响应⽤程序的五个错误以及避免它们的⽅法:1. 未初始化的变量程序启动时,系统会为其分配⼀块内存以供存储数据。

这意味着程序启动时,变量将获得内存中的⼀个随机值。

有些编程环境会在程序启动时特意将内存“清零”,因此每个变量都得以有初始的零值。

程序中的变量都以零值作为初始值,听上去是很不错的。

但是在 C 编程规范中,系统并不会初始化变量。

看⼀下这个使⽤了若⼲变量和两个数组的⽰例程序:#include <stdio.h>#include <stdlib.h>intmain(){int i, j, k;int numbers[5];int *array;puts("These variables are not initialized:");printf(" i = %d\n", i);printf(" j = %d\n", j);printf(" k = %d\n", k);puts("This array is not initialized:");for (i = 0; i < 5; i++) {printf(" numbers[%d] = %d\n", i, numbers[i]);}puts("malloc an array ...");array = malloc(sizeof(int) * 5);if (array) {puts("This malloc'ed array is not initialized:");for (i = 0; i < 5; i++) {printf(" array[%d] = %d\n", i, array[i]);}free(array);}/* done */puts("Ok");return 0;}这个程序不会初始化变量,所以变量以系统内存中的随机值作为初始值。

C语言编译中的常见错误

C语言编译中的常见错误

C语⾔编译中的常见错误C语⾔编译中的常见错误1、警告类错误‘XXX’declare but never used变量XXX已定义但从未⽤过。

‘XXX’is assigned a value which is never used变量XXX已赋值但从未⽤过。

Code has no effect 程序中含有没有实际作⽤的代码。

Non-portable pointer conversion不适当的指针转换,可能是在应该使⽤指针的地⽅⽤了⼀个⾮0的数值。

Possible us e of ‘XXX’before definition表达式中使⽤了未赋值的变量Possibly incorrect assignment这样的赋值可能不正确Redeclaration of ‘main’⼀个程序⽂件中主函数main不⽌⼀个。

Suspicious pointer conversion可疑的指针转换。

通常是使⽤了基本类型不匹配的指针。

Unreachable code程序含有不能执⾏到的代码。

2、错误或致命错误Compound statement missing } in function main程序结尾缺少括号}。

“}”expected;“(”expected等复合语句或数组初始化的结尾缺少“)”;“(”。

Case outside of switch case不属于Switch结构,多由于switch结构中的花括号不配对所致。

Case statement missing ‘:’switch结构中的某个case之后缺少冒号。

Constant expression required定义数组时指定的数组长度不是常量表达式。

Declaration syntax error 结构体或联合类型的定义后缺少分号。

Declaration was expected 缺少说明,通常是因为缺少分界符如逗号、分号、右圆括号等所引起的。

Default outside switch Default部分放到了switch结构之外,⼀般是因为花括号不匹配⽽引起的。

C语言编程时常犯的17种错误

C语言编程时常犯的17种错误

C语言编程时常犯的17种错误对于大部分程序员,是学习编程的第一门语言,很少有不了解C的程序员。

下面是整理的C语言编程时常犯的17种错误,看看你都犯过以下哪些错误呢?C语言编程时常犯的错误1、书写标识符时,忽略了大小写字母的区别。

main(){int a=5;printf("%d",A);}编译程序把a和A认为是两个不同的变量名,而显示出错信息。

C认为大写字母和小写字母是两个不同的字符。

习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

2、忽略了变量的类型,进行了不合法的运算。

代码如下:main(){float a,b;printf("%d",a%b);}%是求余运算,得到a/b的整余数。

整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。

3、将字符常量与字符串常量混淆。

char c;c=”a”;在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。

C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a’和‘’,而把它赋给一个字符变量是不行的。

4、忽略了“=”与“==”的区别。

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

如在BASIC程序中可以写if (a=3) then …但C语言中,“=”是赋值运算符,“==”是关系运算符。

如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。

由于习惯问题,初学者往往会犯这样的错误。

5、忘记加分号。

分号是C语句中不可缺少的一部分,语句末尾必须有分号。

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

改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。

C语言常出错的地方与常用算法

C语言常出错的地方与常用算法

C语言常出错的地方与常用算法一、C语言常出错的地方:1.语法错误:C语言是一门强类型语言,所以每行代码结束时要加上分号。

还有常见的语法错误如括号不匹配、缺少花括号等。

2.变量声明错误:变量在使用之前必须先声明,否则会报错。

同时,还要注意变量名的命名规范,不要使用C语言的关键字作为变量名,也不要重复声明同一个变量。

3.数组越界错误:C语言中的数组是从0开始索引的,如果访问数组时超出了其定义的范围,将导致内存访问错误。

4.指针错误:在C语言中,指针是一种特殊的变量,常常用于访问和操作内存。

但是指针使用不当容易引发错误,如空指针访问、野指针等。

5.逻辑错误:逻辑错误是指程序的执行结果与预期不符。

可能是因为程序设计思路有误,或者是由于运算符的优先级或使用方式出错。

6.内存分配错误:在C语言中,动态内存分配需要使用malloc(或者calloc(函数来申请内存,而使用完之后需要使用free(函数释放内存。

如果内存分配和释放不匹配,就会造成内存泄漏或者内存访问错误。

7.类型错误:C语言是一种强类型语言,变量的类型必须在声明时指定,并不能进行隐式的类型转换。

如果类型不匹配,就会出现类型错误。

8.语义错误:语义错误是指程序的执行结果与预期不符合。

这类错误往往在程序的逻辑设计上有问题,如算法不正确、条件判断错误等。

二、常用算法:1.排序算法:排序是计算机程序设计中最常用的算法之一,如冒泡排序、选择排序、插入排序、快速排序、归并排序等。

2.查找算法:查找是在一组数据中寻找特定元素的过程,常用的查找算法有顺序查找、二分查找、哈希查找等。

3.图算法:图是一种数据结构,图算法主要解决图的遍历、最短路径、最小生成树等问题,如深度优先、广度优先、迪杰斯特拉算法、克鲁斯卡尔算法等。

5.动态规划算法:动态规划是一种常见的算法设计方法,常用于解决优化问题和最优化问题,如背包问题、最长公共子序列等。

6.贪心算法:贪心算法是一种基于贪心策略的算法设计方法,它每次都选择当前最优解来求解问题,如最小生成树问题、背包问题等。

C语言常见错误分析

C语言常见错误分析

C语⾔常见错误分析C语⾔常见错误分析:错误分类:语法错、逻辑错、运⾏错。

0.忘记定义变量:main(){x=3;y=6;printf(“%d\n”,x+y);1.C语⾔的变量⼀定要先定义才能使⽤;2.输⼊输出的数据的类型与所⽤格式说明符不⼀致int a=3;float b=4.5;printf(“%f%d\n”,a,b);它们并不是按照赋值的规则进⾏转换(如把4.5转换为4),⽽是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数据按%d,作为整数输出) 3.未注意int型数据的数值范围int型数据的数值范围(-32768~32768)int num=89101;printf(“%d”,num);会将超过低16位的数截去从⽽得到23563注意:定义了long型,⽽在输出时仍⽤”%d”说明符,仍会出现以上错误4.输⼊变量时忘记使⽤地址符scanf(“%d%d”,a,b);5.输⼊时数据的组织与要求不符对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输⼊6.误把”=“作为”等于”⽐较符“=“为附值运算符“==“为⽐较运算符7.语句后⾯漏分号{t=a;a=b;b=t}它是pascal的语法8.不该加分号的地⽅加了分号if(a>b);printf(“a is larger than b\n”);for(i=0;i<10;i++);scanf(“%d”,&x);printf(“%d\n”,x*x);}9.对应该有花括弧的复合语句,忘记加花括弧sum=0;i=1;while(i<=100)sum=sum+1;i++;10.括弧不配对while((c=getchar()!=‘#’)putchar(c);11.在⽤标识时,忘记了⼤写字母和⼩写字母的区别{int a,b,c;a=2;b=3;C=A+B;printf(“%d+%d=%D”,A,B,C);}12.引⽤数组元素时误⽤发圆括弧{int i,a(10);for(i=0;i<10;i++)scanf(“%d”,&a(i));}13.在定义数组时,将定义的”元素个数”误认为是”可使⽤的最⼤下标值{ int a[10]={1,2,3,4,5,6,7,8,9,10};int i;for(i=1;i<=10;i++)printf(“%d”,a[i]);}14.对⼆维或多维数组的定义和引⽤的⽅法不对{int a[5,4];printf(“%d”,a[1+2,2+2]);…}15.误以为数组名代表数组中全部元素{int a[4]={1,2,3,4};printf(“%d%d%d%d”,a);}16.混淆字符数组与字符指针的区别main(){char str[40];str=“Computer and c”;printf(“%s\n”,str);}17.在引⽤指针变量之前没有对它赋予确定的值{ char *p;scanf(“%s”,p);}{char *p,c[20];p=c;scanf(“%s”,p);}18.switch语句的各分⽀中漏写 break语句混淆字符和字符串的表⽰形式…char sex;sex=“M”;…19.使⽤⾃加(++)和⾃减(--)运算符时出的错误{int *p,a[5]={1,3,5,7,9};p=a;printf(“%d”,*p++);注意于*(++p)的区别;20.所调⽤的函数在调⽤语句之后才定义,⽽⼜在调⽤前未加说明main() {float x,y,z;x=3.5;y=-7.6;z=max(x,y);printf(“%f”,z);}float max(float x,float y){return (x>y?x:y);}21.误认为形参值的改变会影响实参的值swap(int x,int y){int t;t=x;x=y;y=t;}main(){int a,b;a=3;b=4;swap(a,b);printf(“%d,%d\n”,a,b);}22.函数的实参和形参类型不⼀致fun(float x,float y)main(){int a=3,b=4;c=fun(a,b);…}23.不同类的型指针混⽤{int i=3,*p1;float a=1.5,*p2;p1=&i;p2=&a;printf(“%d,%d\n”,*p1,*p2);}24.没有注意函数参数的求值顺序int i=3;prinft(“%d,%d,%d\n”,i,++i,++i);结果为5,5,4因为VC++是采取⾃右⾄左的顺序求函数的值C标准没有具体规定函数参数求值的顺序25.混淆数组名与指针变量的区别{ int i,a[5];for(i=0;i<5;i++)scanf(“%d”,a++);}{int a[5],*p;p=a;for(int i=0;i<5;i++)scanf(“%d”,p++)}{int a[5],*p;for(p=a;pscanf(“%d”,p);}26.混淆结构体类型与结构体变量的区别struct worker{long int num;char name[20];char sex;int age;};worker.num=187045;strcpy(/doc/449e33ccda38376baf1faefa.html ,”ZhangFun”);worker.sex=‘M’;worker.age=18;27.使⽤⽂件时忘记打开,⽤只读⽅式打开,却企图向该⽂件输出数据if(fp=fopen(“test”,”r”))==NULL){printf(“cannot open this file\n”);exit(0);ch=fgetc(fp);while(ch!=‘#’){ch=ch+4;fputc(ch,fp);ch=fgetc(fp);}C语⾔编程常见问题分析1.2.1 参数校验问题在C语⾔的函数中,⼀般都要对函数的参数进⾏校验,但是有些情况下不在函数内进⾏校验,⽽由调⽤者在外部校验,到底什么情况下应该在函数内进⾏校验,什么情况下不需要在函数内进⾏校验呢?下列原则可供读者参考。

C语言程序常见错误与调试方法

C语言程序常见错误与调试方法
C Programming
(三)C语言程序调试方法 3、对运行结果作分析,看它是否符合要求。
• 有的初学者看到运行结果就认为没问题了,不作 认真分析,这是危险的。 • 有时,数据比较复杂,难以立即判断结果是否正 确。可以事先考虑好一批“试验数据”,输入这 些数据可以很容易判断结果正确与否。 • 事实上,当程序复杂时很难把所有的可能情况全 部都试到,选择典型的临界数据作试验即可。
C Programming
3、警告 • “警告”是指被编译程序怀疑有错,但不确定, 有时可强行编译通过。例如:主函数没有返回值 时没有加void声明、double型数据被转换为float 型数据等。 • 这些警告中,有些会导致错误,有些则可以编译 通过。
C Programming
(三)C语言程序调试方法
• 编译诊断的语法错误分为3类:致命错误、错误和 警告。
C Programming
1、致命错误 • “致命错误”大多数是编译程序内部发生错误。 • 发生这类错误时,编译被迫终止,只能重新启动 编译程序。幸运的是,这类错误很少发生,但是 为了安全,编译前最好先保存程序。
C Programming
2、错误 • “错误”通常是在编译时,语法不当所引起的, 例如括号不匹配、变量为声明等。 • 产生这类错误时,编译程序会出现报错提示,根 据提示对源程序进行修改即可。这类错误是出现 最频繁的。
C Programming
1、语法错误
• 语法错误是指那些由于编程中输入不符合语法规 则产生的错误。 • 例如:表达式不完整、缺少必要的标点符号、关 键字输入错误、数据类型不匹配、循环语句或选 择语句的关键字不配对等。 • 通常,编译器对程序进行编译的过程中,会把检 测到的语法错误以提示的方式列举出来。

C 语言初学者有哪些常见的基本错误?

C 语言初学者有哪些常见的基本错误?

C语言是一门广泛使用的编程语言,但对于初学者来说,学习过程中会遇到一些常见的基本错误。

这些错误可能会导致程序出错或者无法正常运行,因此了解和避免这些错误是非常重要的。

1.拼写错误拼写错误是初学者经常犯的错误。

在C语言中,拼写错误可能会导致程序无法编译或者运行错误。

例如,将“printf”拼写为“prinf”或者将“main”拼写为“mian”都会导致程序无法编译。

为了避免这种错误,建议初学者在编写代码时仔细检查拼写,或者使用IDE(集成开发环境),它可以自动检查拼写错误并提供纠正建议。

2.语法错误语法错误是初学者常见的错误之一。

在C语言中,语法错误可能会导致程序无法编译或者运行错误。

例如,忘记添加分号或者花括号不匹配都会导致程序无法编译。

为了避免这种错误,建议初学者仔细阅读代码,并确保所有语法都是正确的。

使用IDE可以帮助初学者检测语法错误。

3.数组越界数组越界是初学者常见的错误之一。

在C语言中,数组越界可能会导致程序崩溃或者出现未定义的行为。

例如,访问数组中不存在的元素或者访问超出数组范围的元素都会导致数组越界。

为了避免这种错误,建议初学者确保数组索引在数组范围内,并使用循环结构来遍历数组。

使用IDE可以帮助初学者检测数组越界错误。

4.变量未初始化变量未初始化是初学者常见的错误之一。

在C语言中,未初始化的变量可能会导致程序出现未定义的行为。

例如,未初始化的变量可能包含随机值或者空值。

为了避免这种错误,建议初学者在使用变量之前初始化它们。

使用IDE可以帮助初学者检测未初始化的变量。

5.内存泄漏内存泄漏是初学者常见的错误之一。

在C语言中,内存泄漏可能会导致程序消耗大量内存并最终崩溃。

例如,未释放动态分配的内存或者重复释放内存都会导致内存泄漏。

为了避免这种错误,建议初学者在使用动态内存分配时,确保释放所有分配的内存。

使用IDE可以帮助初学者检测内存泄漏。

C语言初学者常见的基本错误包括拼写错误、语法错误、数组越界、变量未初始化和内存泄漏。

学习C语言的个常见错误

学习C语言的个常见错误

学习C语言的个常见错误C语言是一门广泛应用于编程领域的高级编程语言,因其简洁、高效和灵活性而受到广泛关注和应用。

然而,对于初学者来说,学习C语言可能会遇到一些常见错误。

本文将分享一些关于学习C语言时常见的错误,旨在帮助读者在学习过程中更好地避免这些错误。

错误一:语法错误语法错误是学习任何编程语言时都会遇到的问题,尤其是对于初学者。

C语言的语法非常严格,缺少一个括号、分号或者拼写错误都有可能导致代码无法编译或运行失败。

因此,在编写代码的过程中,务必要仔细检查每一行代码,确保语法正确。

错误二:变量未初始化在C语言中,变量需要在使用之前进行初始化,否则它们的值是不确定的。

未初始化的变量可能会导致程序崩溃或产生不可预料的结果。

因此,建议在使用变量之前对其进行初始化,确保其值是可知的。

错误三:内存泄漏C语言是一种底层编程语言,开发者需要手动分配和释放内存。

内存泄漏指的是在程序运行过程中,分配的内存没有被正确释放,导致内存占用不断增加,最终引发程序崩溃或系统资源不足。

为避免内存泄漏,应该在分配内存后及时释放不再使用的内存。

错误四:使用未定义变量使用未定义的变量是C语言中常见的错误之一。

在使用变量之前,必须为其声明和定义适当的类型。

如果使用了未定义的变量,编译器将无法识别该变量并抛出错误。

因此,在使用变量之前,务必确保其已经被正确定义。

错误五:越界访问数组在C语言中,数组是一个非常重要的数据结构。

然而,访问数组时经常会发生越界错误。

越界访问数组指的是试图读取或写入数组的元素时,访问到了数组范围之外的内存空间。

这可能导致程序崩溃或者产生不确定的结果。

为避免越界访问数组,应该始终确保数组索引在合法范围内。

错误六:忘记使用break语句在C语言的switch语句中,每个case分支结束后应该使用break语句,以确保程序执行完当前分支后跳出switch语句。

如果忘记使用break语句,程序将会继续执行下一个case分支,导致逻辑错误。

C语言中的常见错误及解决方法

C语言中的常见错误及解决方法

C语言中的常见错误及解决方法C语言作为一种高级编程语言,被广泛应用于系统和应用程序的开发中。

然而,由于其语法的复杂性和良好的编程实践的要求,C语言中常常出现各种错误。

本文将介绍C语言中一些常见的错误,并提供相应的解决方法,以帮助读者避免这些错误。

1. 语法错误语法错误是C语言编程中最常见的错误之一。

这些错误可能是由于拼写错误、缺少分号、括号未匹配等原因导致的。

为了避免这些错误,开发者应该仔细检查代码,并使用编辑器的自动补全功能来减少拼写错误。

解决方法:使用编译器提供的错误信息来定位错误所在位置,并逐一排除语法错误。

2. 类型错误类型错误在C语言程序中也很常见。

这些错误通常是由于将不同类型的值赋给变量、将函数返回值赋给错误类型的变量等情况导致的。

为了避免这些错误,程序员应该仔细检查类型并使用类型转换函数来正确地使用不同类型的值。

解决方法:检查并确保变量的类型与其使用的值的类型相匹配,并使用强制类型转换来确保类型一致。

3. 数组越界错误数组越界错误也是C语言程序中常见的错误之一。

这些错误通常是由于访问超出数组边界的元素导致的。

为了避免这些错误,程序员应该遵循正确的数组索引和边界检查规则,并确保不会访问超过数组边界的位置。

解决方法:使用循环进行正确的数组遍历并检查索引是否越界。

4. 空指针错误空指针错误是C语言编程中另一个常见的错误。

这些错误通常是由于对空指针进行解引用操作导致的。

为了避免这些错误,程序员应该始终检查指针是否为空,并在必要时进行相应的错误处理。

解决方法:使用条件语句检查指针是否为空,并根据情况进行错误处理或赋予合适的值。

5. 内存泄漏错误内存泄漏错误是C语言中常见的错误之一。

这些错误通常是由于未正确释放动态分配的内存导致的。

为了避免这些错误,程序员应该确保在使用完毕后正确地释放内存,并避免额外的内存分配。

解决方法:在动态分配内存后,确保在使用完毕后使用free函数释放内存。

总结:C语言中的错误类型繁多,但通过遵循良好的编程实践、仔细检查代码以及使用适当的调试工具,我们可以避免大多数错误。

C语言常见错误分析汇总

C语言常见错误分析汇总

C语言常见错误分析汇总C语言是一种广泛应用的编程语言,但由于语法相对复杂,初学者容易犯一些常见的错误。

下面将汇总一些常见的C语言错误,以便帮助初学者更好地理解和避免这些问题。

1.语法错误:C语言对语法要求非常严格,一些错误的语法表达会导致编译错误。

例如,缺少分号、括号不成对等。

2.逻辑错误:这类错误通常是代码逻辑错误,导致程序运行结果与预期不同。

例如,条件判断错误、循环错误等。

3.变量未初始化:在使用变量之前,未对其进行初始化操作会导致不确定的结果。

这种错误可能会导致程序崩溃或产生意外结果。

4.数组越界:在C语言中,数组的下标从0开始,如果使用了超出数组范围的下标,会导致越界错误。

这可能会修改其他内存空间的值,导致程序错误。

5.内存泄漏:动态分配内存后没有正确释放会导致内存泄漏。

这在长时间运行的程序中可能导致内存耗尽。

6.不匹配的数据类型:数据类型不匹配会导致计算错误或编译错误。

例如,对整型变量使用浮点数运算符,或使用未定义的数据类型。

7.空指针解引用:解引用空指针会导致程序崩溃。

在使用指针之前,一定要确保其指向有效的内存空间。

8.死循环:循环条件错误或循环体内没有正确的终止条件会导致死循环,程序无法正常退出。

9.多次释放同一块内存:多次释放同一块动态分配的内存会导致程序错误或崩溃。

10.缺少返回语句:在函数中缺少返回语句或返回语句在多个分支中没有覆盖所有情况,会导致未定义的行为。

11.使用未定义的变量:在使用变量之前,必须先定义该变量。

否则会导致编译错误。

12.逻辑短路错误:逻辑运算符中,逻辑短路原则是如果已经可以确定逻辑表达式的结果,后续的表达式不会被执行。

如果依赖于后续表达式的计算结果,会导致逻辑错误。

13.误解优先级和结合性:C语言中运算符有优先级和结合性,如果不理解运算符的优先级和结合性,会导致计算错误。

14.使用未声明的函数:在调用函数之前,必须先声明函数。

否则会导致编译错误。

15. 不正确的格式化字符串:在使用printf等函数进行格式化输出时,必须提供与格式字符串匹配的参数,否则会导致未定义的行为。

C语言入门易犯错误总结

C语言入门易犯错误总结

C语言入门易犯错误总结
C语言初学者易犯错误
如果你是一个初学者,当你的C程序发生了错误,你要相信你自己是错的,因为你犯错误的可能性远远大于书本以及开发工具的错误。

查看错误提示
a)undeclared:可能错误为1,5,6, 8
b)expected…..expression:3,7
c)expected identifier or '(' : 2
d)extraneous closing brace…..: 2
e)redefinition of….. : 4
对应常见错误:
1.使用了未定义的变量。

2.括号匹配错误(例如,{}没有一一配对)。

3.标点符号使用错误(例如,使用中文的分号,双引号,单引号)。

4.重复定义变量(例如,intnum,num;)。

5.单词拼写错误(例如,将main写成了mian)。

6.使用了函数库中的函数,忘记引入对应的头文件。

7.忘记用分号分割语句。

8.自定义函数未声明。

C语言常见错误分析汇总

C语言常见错误分析汇总

C语言常见错误分析汇总1.拼写错误(1)#include <stido.h> //头文件拼写错了(2)#inculde <stdio.h>//include拼写错了(3)#include <stdio.h>void mian() //main拼写错了2.(1)书写标识符时,忽略了大小写字母的区别。

main(){int a=5;printf("%d",A);}3.忽略了变量的类型,进行了不合法的运算。

main(){float a,b;printf("%d",a%b); }4.将字符常量与字符串常量混淆。

char c;c="a";在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。

C规定以“\0”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\0',而把它赋给一个字符变量是不行的。

5.忽略了“=”与“==”的区别。

但C语言中,“=”是赋值运算符,“==”是关系运算符。

如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。

由于习惯问题,初学者往往会犯这样的错误。

6.忘记加分号。

分号是C语句中不可缺少的一部分,语句末尾必须有分号。

#include <stdio.h>void main(){ int a,b;a=1b=2printf("%d,%d",a,b); }{ z=x+y;t=z/100;printf("%f",t); //此处的分号不能省略}对于复合语句来说,最后一个语句中最后的分号不能忽略不写7.多加了分号。

对于一个复合语句,如:{ z=x+y;t=z/100;printf("%f",t);}; //右花括号后不需要加分号复合语句的右花括号后不应再加分号,否则将会画蛇添足。

C语言常见错误及提示

C语言常见错误及提示

C语言常见错误及提示C语言常见错误分析注意:本文中所列举的错误,给出的只是错误的名称和类型以及错误提示,没有给出对应的改正方法,请有兴趣的同学们根据具体情况自行修改、编译、执行,如果在编程中出现类似错误,能够快速定位错误并解决。

一、错误分类语法错逻辑错运行错二、常见错误及提示1. 变量未定义,C语言的变量一定要先定义才能使用;#includevoid main(){x=3; y=6;printf(“%d\n”,x+y);}错误类型:语法错错误提示:D:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : error C2065: 'x' : undeclared identifierD:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : error C2065: 'y' : undeclared identifier2. 输入输出的数据的类型与所用格式说明符不一致int a=3;float b=4.5;printf(“%f%d\n”,a,b);错误类型:逻辑错它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数据按%d,作为整数输出)错误提示:无3. 未注意int型数据的数值范围short int型数据的数值范围(-32768~32768)short int num=89101;printf(“%d”,num);会将超过低16位的数截去从而得到23563错误类型:逻辑错错误提示:D:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : warning C4305: 'initializing' : truncation from 'const int' to 'short' D:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : warning C4309: 'initializing' : truncation of constant value注意:定义了long型,而在输出时仍用”%d”说明符,仍会出现以上错误4. 输入变量时忘记使用地址符&scanf(“%d%d”,a,b);错误类型:语法错错误提示:D:\WorkSpace\C++WorkSpace\测试\test.cpp(5) : warning C4700: local variable 'b' used without having been initialized D:\WorkSpace\C++WorkSpace\测试\test.cpp(5) : warning C4700: local variable 'a' used without having been initialized5. 输入时数据的组织与要求不符对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输入scanf(“%d, %d”, &a, &b);应当输入:5, 6 否则程序不能正常读入数据错误类型:运行错错误提示:无6. 误把”=“作为”等于”比较符“=“为附值运算符“==“为比较运算符错误类型:逻辑错错误提示:无7. 语句后面漏分号{t=a;a=b;b=t}它是pascal的语法错误类型:语法错错误提示:D:\WorkSpace\C++WorkSpace\测试\test.cpp(9) : error C2143: syntax error : missing ';' before '}'8. 不该加分号的地方加了分号if(a>b);printf(“a is larger than b\n”);for(i=0;i<10;i++);{scanf(“%d”,&x);printf(“%d\n”,x*x);}错误类型:语法错错误提示:D:\WorkSpace\C++WorkSpace\测试\test.cpp(6) : warning C4390: ';' : empty controlled statement found; is this the intent?9. 对应该有花括弧的复合语句,忘记加花括弧sum=0;i=1;while(i<=100)sum=sum+1;i++;由于i始终为1,while循环无法正常退出。

C语言技术使用中常见错误与解决方法

C语言技术使用中常见错误与解决方法

C语言技术使用中常见错误与解决方法C语言作为一种广泛应用的编程语言,常常被程序员用来开发各种应用程序。

然而,在使用C语言进行编程的过程中,常会遇到一些常见的错误。

本文将探讨一些常见的C语言技术使用错误,并提供相应的解决方法。

一、语法错误语法错误是编程中最常见的错误之一。

它们通常是由于不正确的语法或拼写错误导致的。

例如,缺少分号、括号不匹配、拼写错误等。

解决方法:要解决语法错误,我们需要仔细检查代码并确保所有的语法规则都得到遵守。

可以使用代码编辑器的自动补全功能来减少拼写错误。

另外,可以使用编译器的错误提示功能来帮助我们找到并修复语法错误。

二、逻辑错误逻辑错误是指程序的输出结果与我们预期的不一致。

这种错误通常是由于程序中的算法或逻辑错误导致的。

例如,计算结果错误、循环条件错误等。

解决方法:要解决逻辑错误,我们需要仔细检查程序的算法和逻辑。

可以使用调试工具来逐步执行程序并观察变量的值,以便找到错误所在。

另外,可以使用断言来验证程序的逻辑,以确保程序的正确性。

三、内存错误内存错误是指在程序中访问无效的内存地址或未初始化的变量。

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

解决方法:要解决内存错误,我们需要仔细检查程序中的内存分配和释放操作。

可以使用动态内存分配函数(如malloc和free)来确保内存的正确分配和释放。

另外,可以使用内存调试工具来检测和修复内存错误。

四、类型错误类型错误是指在程序中使用了错误的数据类型。

这种错误通常会导致程序的运行结果不正确或产生编译错误。

解决方法:要解决类型错误,我们需要仔细检查程序中的变量和函数的数据类型。

可以使用强制类型转换来将一个数据类型转换为另一个数据类型。

另外,可以使用编译器的类型检查功能来帮助我们找到并修复类型错误。

五、性能问题性能问题是指程序在运行过程中消耗过多的时间或内存资源。

这种问题通常会导致程序的运行速度变慢或产生内存泄漏等。

解决方法:要解决性能问题,我们需要仔细检查程序中的算法和数据结构。

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

对于刚学编程,刚接触C++的新手来说,编译运行报错是最头疼的一件事,爆出一堆英文,英语差一点的又不知道什么意思,所以也不知道如何去改,在此,我给大家传一份常见错误中英文对照表及简单解释,希望可以帮到大家:fatal error C1003: error count exceeds number; stopping compilation中文对照:(编译错误)错误太多,停止编译分析:修改之前的错误,再次编译fatal error C1004: unexpected end of file found中文对照:(编译错误)文件未结束分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用或表达式中括号没有配对出现、或者注释符“/*…*/”不完整等fatal error C1083: Cannot open include file: 'xxx': No such file or directory中文对照:(编译错误)无法打开头文件xxx:没有这个文件或路径分析:头文件不存在、或者头文件拼写错误、或者文件为只读fatal error C1903: unable to recover from previous error(s); stopping compilation中文对照:(编译错误)无法从之前的错误中恢复,停止编译分析:引起错误的原因很多,建议先修改之前的错误error C2001: newline in constant中文对照:(编译错误)常量中创建新行分析:字符串常量多行书写error C2006: #include expected a filename, found 'identifier'中文对照:(编译错误)#include命令中需要文件名分析:一般是头文件未用一对双引号或尖括号括起来,例如“#include stdio.h”error C2007: #define syntax中文对照:(编译错误)#define语法错误分析:例如“#define”后缺少宏名,例如“#define”error C2008: 'xxx' : unexpected in macro definition中文对照:(编译错误)宏定义时出现了意外的xxx分析:宏定义时宏名与替换串之间应有空格,例如“#define TRUE"1"”error C2009: reuse of macro formal 'identifier'中文对照:(编译错误)带参宏的形式参数重复使用分析:宏定义如有参数不能重名,例如“#define s(a,a) (a*a)”中参数a重复error C2010: 'character' : unexpected in macro formal parameter list中文对照:(编译错误)带参宏的形式参数表中出现未知字符分析:例如“#define s(r|) r*r”中参数多了一个字符‘|’error C2014: preprocessor command must start as first nonwhite space中文对照:(编译错误)预处理命令前面只允许空格分析:每一条预处理命令都应独占一行,不应出现其他非空格字符error C2015: too many characters in constant中文对照:(编译错误)常量中包含多个字符分析:字符型常量的单引号中只能有一个字符,或是以“\”开始的一个转义字符,例如“char error = 'error';”error C2017: illegal escape sequence中文对照:(编译错误)转义字符非法分析:一般是转义字符位于' ' 或" " 之外,例如“char error = ' '\n;”error C2018: unknown character '0xhh'中文对照:(编译错误)未知的字符0xhh分析:一般是输入了中文标点符号,例如“char error = 'E';”中“;”为中文标点符号error C2019: expected preprocessor directive, found 'character'中文对照:(编译错误)期待预处理命令,但有无效字符分析:一般是预处理命令的#号后误输入其他无效字符,例如“#!define TRUE 1”error C2021: expected exponent value, not 'character'中文对照:(编译错误)期待指数值,不能是字符分析:一般是浮点数的指数表示形式有误,例如123.456Eerror C2039: 'identifier1' : is not a member of 'identifier2'中文对照:(编译错误)标识符1不是标识符2的成员分析:程序错误地调用或引用结构体、共用体、类的成员error C2041: illegal digit 'x' for base 'n'中文对照:(编译错误)对于n进制来说数字x非法分析:一般是八进制或十六进制数表示错误,例如“int i = 081;”语句中数字‘8’不是八进制的基数error C2048: more than one default中文对照:(编译错误)default语句多于一个分析:switch语句中只能有一个default,删去多余的defaulterror C2050: switch expression not integral中文对照:(编译错误)switch表达式不是整型的分析:switch表达式必须是整型(或字符型),例如“switch ("a")”中表达式为字符串,这是非法的error C2051: case expression not constant中文对照:(编译错误)case表达式不是常量分析:case表达式应为常量表达式,例如“case "a"”中“"a"”为字符串,这是非法的error C2052: 'type' : illegal type for case expression中文对照:(编译错误)case表达式类型非法分析:case表达式必须是一个整型常量(包括字符型)error C2057: expected constant expression中文对照:(编译错误)期待常量表达式分析:一般是定义数组时数组长度为变量,例如“int n=10; int a[n];”中n为变量,这是非法的error C2058: constant expression is not integral中文对照:(编译错误)常量表达式不是整数分析:一般是定义数组时数组长度不是整型常量error C2059: syntax error : 'xxx'中文对照:(编译错误)‘xxx’语法错误分析:引起错误的原因很多,可能多加或少加了符号xxxerror C2064: term does not evaluate to a function中文对照:(编译错误)无法识别函数语言分析:1、函数参数有误,表达式可能不正确,例如“sqrt(s(s-a)(s-b)(s-c));”中表达式不正确2、变量与函数重名或该标识符不是函数,例如“int i,j; j=i();”中i不是函数error C2065: 'xxx' : undeclared identifier中文对照:(编译错误)未定义的标识符xxx分析:1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。

error C2078: too many initializers中文对照:(编译错误)初始值过多分析:一般是数组初始化时初始值的个数大于数组长度,例如“int b[2]={1,2,3};”error C2082: redefinition of formal parameter 'xxx'中文对照:(编译错误)重复定义形式参数xxx分析:函数首部中的形式参数不能在函数体中再次被定义error C2084: function 'xxx' already has a body中文对照:(编译错误)已定义函数xxx分析:在VC++早期版本中函数不能重名,6.0版本中支持函数的重载,函数名可以相同但参数不一样error C2086: 'xxx' : redefinition中文对照:(编译错误)标识符xxx重定义分析:变量名、数组名重名error C2087: '<Unknown>' : missing subscript中文对照:(编译错误)下标未知分析:一般是定义二维数组时未指定第二维的长度,例如“int a[3][];”error C2100: illegal indirection中文对照:(编译错误)非法的间接访问运算符“*”分析:对非指针变量使用“*”运算error C2105: 'operator' needs l-value中文对照:(编译错误)操作符需要左值分析:例如“(a+b)++;”语句,“++”运算符无效error C2106: 'operator': left operand must be l-value中文对照:(编译错误)操作符的左操作数必须是左值分析:例如“a+b=1;”语句,“=”运算符左值必须为变量,不能是表达式error C2110: cannot add two pointers中文对照:(编译错误)两个指针量不能相加分析:例如“int *pa,*pb,*a; a = pa + pb;”中两个指针变量不能进行“+”运算error C2117: 'xxx' : array bounds overflow中文对照:(编译错误)数组xxx边界溢出分析:一般是字符数组初始化时字符串长度大于字符数组长度,例如“char str[4] = "abcd";”error C2118: negative subscript or subscript is too large中文对照:(编译错误)下标为负或下标太大分析:一般是定义数组或引用数组元素时下标不正确error C2124: divide or mod by zero中文对照:(编译错误)被零除或对0求余分析:例如“int i = 1 / 0;”除数为0error C2133: 'xxx' : unknown size中文对照:(编译错误)数组xxx长度未知分析:一般是定义数组时未初始化也未指定数组长度,例如“int a[];”error C2137: empty character constant。

相关文档
最新文档