c常见错误有例子

合集下载

C语言错误大全

C语言错误大全

1、意思是:在 xxx 之前应输入表达式。

2、下面为C语言的错误大全及中文解释:1: Ambiguous operators need parentheses —不明确的运算需要用括号括起2: Ambiguous symbol xxx —不明确的符号3: Argument list syntax error —参数表语法错误4: Array bounds missing —丢失数组界限符5: Array size toolarge —数组尺寸太大6: Bad character in paramenters —参数中有不适当的字符7: Bad file name format in include directive —包含命令中文件名格式不正确8: Bad ifdef directive synatax —编译预处理ifdef有语法错9: Bad undef directive syntax —编译预处理undef有语法错10: Bit field too large —位字段太长11: Call of non-function —调用未定义的函数12: Call to function with no prototype —调用函数时没有函数的说明13: Cannot modify a const object —不允许修改常量对象14: Case outside of switch —漏掉了case 语句15: Case syntax error — Case 语法错误16: Code has no effect —代码不可能执行到17: Compound statement missing{ —分程序漏掉"{"18: Conflicting type modifiers —不明确的类型说明符19: Constant expression required —要求常量表达式20: Constant out of range in comparison —在比较中常量超出范围21: Conversion may lose significant digits —转换时会丢失意义的数字22: Conversion of near pointer not allowed —不允许转换近指针23: Could not find file xxx —找不到XXX文件24: Declaration missing ; —说明缺少";"25: Declaration syntax error —说明中出现语法错误26: Default outside of switch — Default 出现在switch语句之外27: Define directive needs an identifier —定义编译预处理需要标识符28: Division by zero —用零作除数29: Do statement must have while — Do-while语句中缺少while部分30: Enum syntax error —枚举类型语法错误31: Enumeration constant syntax error —枚举常数语法错误32: Error directive :xxx —错误的编译预处理命令33: Error writing output file —写输出文件错误34: Expression syntax error —表达式语法错误35: Extra parameter in call —调用时出现多余错误36: File name too long —文件名太长37: Function call missing ) —函数调用缺少右括号38: Fuction definition out of place —函数定义位置错误39: Fuction should return a value —函数必需返回一个值40: Goto statement missing label —Goto语句没有标号41: Hexadecimal or octal constant too large —16进制或8进制常数太大42: Illegal character x —非法字符x43: Illegal initialization —非法的初始化44: Illegal octal digit —非法的8进制数字 A45: Illegal pointer subtraction —非法的指针相减46: Illegal structure operation —非法的结构体操作47: Illegal use of floating point —非法的浮点运算48: Illegal use of pointer —指针使用非法49: Improper use of a typedefsymbol —类型定义符号使用不恰当50: In-line assembly not allowed —不允许使用行间汇编51: Incompatible storage class —存储类别不相容52: Incompatible type conversion —不相容的类型转换53: Incorrect number format —错误的数据格式54: Incorrect use of default — Default使用不当55: Invalid indirection —无效的间接运算56: Invalid pointer addition —指针相加无效57: Irreducible expression tree —无法执行的表达式运算58: Lvalue required —需要逻辑值0或非0值59: Macro argument syntax error —宏参数语法错误60: Macro expansion too long —宏的扩展以后太长61: Mismatched number of parameters in definition —定义中参数个数不匹配62: Misplaced break —此处不应出现break语句63: Misplaced continue —此处不应出现continue语句64: Misplaced decimal point —此处不应出现小数点65: Misplaced elif directive —不应编译预处理elif66: Misplaced else —此处不应出现else67: Misplaced else directive —此处不应出现编译预处理else68: Misplaced endif directive —此处不应出现编译预处理endif69: Must be addressable —必须是可以编址的70: Must take address of memory location —必须存储定位的地址71: No declaration for function xxx —没有函数xxx的说明72: No stack —缺少堆栈73: No type information —没有类型信息74: Non-portable pointer assignment —不可移动的指针(地址常数)赋值75: Non-portable pointer comparison —不可移动的指针(地址常数)比较76: Non-portable pointer conversion —不可移动的指针(地址常数)转换77: Not a valid expression format type —不合法的表达式格式78: Not an allowed type —不允许使用的类型79: Numeric constant too large —数值常太大80: Out of memory —内存不够用81: Parameter xxx is never used —能数xxx没有用到82: Pointer required on left side of -> —符号->的左边必须是指针83: Possible use of xxx before definition —在定义之前就使用了xxx(警告)84: Possibly incorrect assignment —赋值可能不正确85: Redeclaration of xxx —重复定义了xxx86: Redefinition of xxx is not identical — xxx的两次定义不一致87: Register allocation failure —寄存器定址失败88: Repeat count needs an lvalue —重复计数需要逻辑值89: Size of structure or array not known —结构体或数给大小不确定90: Statement missing ; —语句后缺少";"91: Structure or union syntax error —结构体或联合体语法错误92: Structure size too large —结构体尺寸太大93: Sub scripting missing ] —下标缺少右方括号94: Superfluous & with function or array —函数或数组中有多余的"&" 95: Suspicious pointer conversion —可疑的指针转换96: Symbol limit exceeded —符号超限97: Too few parameters in call —函数调用时的实参少于函数的参数不98: Too many default cases — Default太多(switch语句中一个)99: Too many error or warning messages —错误或警告信息太多100: Too many type in declaration —说明中类型太多101: Too much auto memory in function —函数用到的局部存储太多102: Too much global data defined in file —文件中全局数据太多103: Two consecutive dots —两个连续的句点104: Type mismatch in parameter xxx —参数xxx类型不匹配105: Type mismatch in redeclaration of xxx — xxx重定义的类型不匹配106: Unable to create output file xxx —无法建立输出文件xxx107: Unable to open include file xxx —无法打开被包含的文件xxx108: Unable to open input file xxx —无法打开输入文件xxx109: Undefined label xxx —没有定义的标号xxx110: Undefined structure xxx —没有定义的结构xxx111: Undefined symbol xxx —没有定义的符号xxx112: Unexpected end of file in comment started on line xxx —从xxx行开始的注解尚未结束文件不能结束113: Unexpected end of file in conditional started on line xxx —从xxx 开始的条件语句尚未结束文件不能结束114: Unknown assemble instruction —未知的汇编结构115: Unknown option —未知的操作116: Unknown preprocessor directive: xxx —不认识的预处理命令xxx117: Unreachable code —无路可达的代码118: Unterminated string or character constant —字符串缺少引号119: User break —用户强行中断了程序120: Void functions may not return a value — Void类型的函数不应有返回值121: Wrong number of arguments —调用函数的参数数目错122: xxx not an argument — xxx不是参数123: xxx not part of structure — xxx不是结构体的一部分124: xxx statement missing ( — xxx语句缺少左括号125: xxx statement missing ) — xxx语句缺少右括号126: xxx statement missing ; — xxx缺少分号127: xxx declared but never used —说明了xxx但没有使用128: xxx is assigned a value which is never used —给xxx赋了值但未用过。

c语言常见的小错误

c语言常见的小错误

1、用if(!strcmp(s1, s2)) 比较两个字符串等值,是否是个好风格?这并不是个很好的风格,虽然这是个流行的习惯用法。

如果两个字符串相等,这个测试返回为真,但! (“非”) 的使用,容易引起误会,以为测试不等值情况。

另一个选择是用一个宏:#define Streq(s1, s2) (strcmp((s1),(s2)) == 0)2、为什么有的人用if (0 == x) 而不是if (x ==0)?这是用来防护一个通常错误的小技巧:if (x = 0)如果你养成了把常量放在== 前面的习惯,当你意外的把代码写成了:if (0 = x)那编译器就会报怨。

明显的,一些人会觉得记住反换测试比记住输入双=号容易。

当然这个技巧只对和常量比较的情况有用。

3、*p++ 自增p 还是p 所指向的变量?后缀++ 和--操作符本质上比前缀一目操作的优先级高,即++与p结合优先级高于*与p的结合优先级,因此*p++ 和*(p++) 等价,它自增p 并返回p自增之前所指向的值(也即先去内容,然后指针p才自加)。

要自增p 指向的值,使用(*p)++, 如果副作用的顺序无关紧要也可以使用++*p.4、我有一个char * 型指针正巧指向一些int 型变量,我想跳过它们。

为什么如下的代码((int *)p)++; 不行?在C 语言中,类型转换意味着“把这些二进制位看作另一种类型,并作相应的对待”; 这是一个转换操作符,根据定义它只能生成一个右值(rvalue)。

而右值既不能赋值,也不能用++ 自增。

(如果编译器支持这样的扩展,那要么是一个错误,要么是有意作出的非标准扩展。

) 要达到你的目的可以用:p = (char *)((int *)p + 1);或者,因为p是char * 型,直接用p += sizeof(int);但是,在可能的情况下,你还是应该首先选择适当的指针类型,而不是一味地试图李代桃僵。

5、C 有“按引用传递” 吗?真的没有。

C语言常见错误分析

C语言常见错误分析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C语言程序设计中的常见错误和解决

C语言程序设计中的常见错误和解决

C语言程序设计中的常见错误和解决在C语言程序设计中,很多初学者经常会遇到一些常见的错误。

这些错误可能是语法错误、逻辑错误或者是其他一些常见问题导致的。

本文将介绍一些经常出现的C语言程序设计错误,并提供相应的解决方法,帮助读者更好地理解和掌握C语言编程。

一、语法错误1. 括号未匹配括号未匹配是C语言中常见的语法错误之一。

在编写代码时,经常会使用到括号,如if语句、for循环等。

如果不小心忘记关闭某个括号,就会导致括号未匹配的错误。

解决方法:仔细检查代码中的括号是否匹配,并确保每个左括号都有相应的右括号。

2. 分号丢失分号丢失是C语言中另一个常见的语法错误。

在C语言中,分号用于分隔语句,如果遗漏了分号,编译器就无法识别出语句的结束。

解决方法:检查每一行语句的末尾,确保每个语句都以分号结尾。

3. 变量未声明在使用变量之前,必须先声明该变量。

如果没有先声明变量就直接使用,编译器将无法识别该变量,从而报错。

解决方法:在使用变量之前,先进行变量声明。

二、逻辑错误1. 循环控制条件错误在编写循环语句时,控制条件的错误是常见的逻辑错误。

如果循环的控制条件错误,循环可能无法正常结束或者根本无法执行。

解决方法:仔细检查循环的控制条件,确保条件符合预期,并在循环体内更新循环变量。

2. 数组越界访问在C语言中,数组的索引从0开始,通过索引访问数组元素时,如果索引超出了数组的范围,就会导致数组越界访问的错误。

解决方法:确保数组索引在正确的范围内,避免越界访问。

如果需要遍历数组,可以使用循环来控制数组的访问范围。

三、其他常见问题及解决方法1. 变量类型不匹配在赋值操作或者表达式计算时,如果不同类型的变量之间进行操作,则会导致变量类型不匹配的错误。

解决方法:确保操作的变量类型相同或者进行强制类型转换,以保证变量类型的匹配。

2. 内存泄漏在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语言时,我们经常会遇到各种各样的代码错误。

这些错误可能会导致程序无法正常运行,甚至崩溃。

本文将对C语言技术中的一些常见代码错误进行解析,帮助读者更好地理解和避免这些错误。

1. 语法错误语法错误是最常见的错误之一,它们通常是由于拼写错误、缺少分号或括号不匹配等问题引起的。

例如,下面的代码中缺少了一个分号:```cint a = 10```这个错误可以通过简单地在行尾添加一个分号来修复。

2. 数组越界错误数组越界错误是指访问数组时超出了数组的边界。

例如,如果一个数组有10个元素,但是我们试图访问第11个元素,就会发生数组越界错误。

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

为了避免数组越界错误,我们应该始终确保我们的数组索引在合法的范围内。

可以使用条件语句或循环来检查数组索引是否越界。

3. 空指针错误空指针错误是指试图访问空指针所引用的内存位置。

当我们声明一个指针变量但没有为其分配内存时,它的值将为NULL。

如果我们试图通过一个空指针来访问内存,就会发生空指针错误。

为了避免空指针错误,我们应该始终在使用指针之前为其分配内存,并在使用指针之后及时释放内存。

4. 逻辑错误逻辑错误是指程序中的错误逻辑或错误的算法。

这种错误可能导致程序的输出不正确或产生意外的结果。

例如,如果我们在一个循环中使用错误的条件,循环可能永远不会结束,或者我们可能会得到错误的结果。

为了避免逻辑错误,我们应该仔细检查我们的代码逻辑,并确保它符合我们的预期。

5. 内存泄漏内存泄漏是指在程序中分配了内存但没有及时释放。

如果我们反复分配内存而没有释放,最终会导致内存耗尽,从而使程序崩溃。

为了避免内存泄漏,我们应该始终在使用完内存后及时释放它。

可以使用free()函数来释放动态分配的内存。

6. 类型错误类型错误是指将一个变量赋给错误的数据类型,或者试图对不兼容的数据类型进行操作。

例如,将一个整数赋给一个字符变量,或者试图对一个字符串进行算术运算。

C语言编写常见错误

C语言编写常见错误

C51语言编写常见错误一、循环1)、在进行while,do...while循环时要对while括号里面的变量赋初值,否则可能出现的不是自己想要的结果。

2)、在写for循环语句中,特别要注意括号里面的变量要一致(例如:for(i=0;i<8;j++)。

)错误。

这个错误不好改,写程序时一定要注意这一点。

3)、在写for循环时,如果想让变量的值一次性增加不是一而是大于一,这时要注意最后变量的变化要写成表达式例如:i=i+10;不要写成i+10,这个不起作用。

4)、在写循环时,对某些变量赋初值时,注意赋初值所放的位置,是放在循环里面还是外面。

不同的地方可能得到的结果不同。

要注意二、结构体、链表1)、在创建链表时,最好对首个结点赋值,否则在编译时可能会出现错误。

(如:后面会显示屯屯屯屯屯屯?)。

三、条件语句1)、在运用if条件语句时,括号里面的等于不要写成赋值号(例如:if(a==1)不要写成if(a=1))。

也就是说在if语句的条件中不要出现赋值号。

四、函数1)、在函数进行参数传递时类型要一致,且只能是实参传递到形参,不能反过来传递。

传递的实参必须是常量(在使用的时候)。

2)、在写主函数时,定义一些变量、数组或指针时,最好在主函数的最前面就定义,否则可能会出现错误。

3)、在写输入函数scanf时,后面的变量前面要加取地址符(例如:scanf(“%d”,&a),不要省略&)。

4)、在写字符串复制函数(strcpy)时切忌写错,把strcpy写成stycpy。

5)、不能直接把字符串赋给一个变量,如果要把一个字符串赋给一个变量,需要用到字符串复制函数strcpy,这个函数包含在“string.h”头文件里面,用时需要将此头文件写在程序的开头。

Strcpy(char *a,char b ),将字符串b复制到字符串a里面,注意字符串a的长度要大于等于字符串b,返回值为字符串a。

五、运算1)、在计算两个数的成积时,不要省略乘号*,例如:s=-b/(2*a)正确;s=-b/2a 错误;2)、在进行除法运算时,要注意除法与取整的区别。

C语言中常见错误

C语言中常见错误

C语⾔中常见错误关于C语⾔在编译时常出现的错误有哪些?1、fatal error C1010: unexpected end of file while looking for precompiledheader directive。

寻找预编译头⽂件路径时遇到了不该遇到的⽂件尾。

(⼀般是没有#include "stdafx.h")2、fatal error C1083: Cannot open include file: 'R…….h': No such fileor directory不能打开包含⽂件“R…….h”:没有这样的⽂件或⽬录。

3、error C2011: 'C……': 'class' type redefinition类“C……”重定义。

4、error C2018: unknown character '0xa3'不认识的字符'0xa3'。

(⼀般是汉字或中⽂标点符号)5、error C2057: expected constant expression希望是常量表达式。

(⼀般出现在switch语句的case分⽀中)6、error C2065: 'IDD_MYDIALOG' : undeclared identifier“IDD_MYDIALOG”:未声明过的标识符。

7、error C2082: redefinition of formal parameter 'bReset'函数参数“bReset”在函数体中重定义。

8、error C2143: syntax error: missing ':' before '{'句法错误:“{”前缺少“;”。

9、error C2146: syntax error : missing ';' before identifier 'dc'句法错误:在“dc”前丢了“;”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
但C语言中,“=”是赋值运算符,“==”才是关系运算符。如:
if (a == 3)
a = b;
a == 3是比较a是否等于3;而a = b;表示把b的值赋给a。初学者往往会把a == 3错写成a = 3,这样写是符合语法的,但是不符合我们的期望。如果错写成了a = 3,有些编译器会给出警告。
9
分号是C语句中不可缺少的一部分,语句末尾必须有分号。
Case syntax error Case 语法错误
Code has no effect代码不可述不可能执行到
Compound statement missing{分程序漏掉"{"
Conflicting type modifiers不明确的类型说明符
Constant expression required要求常量表达式
printf( "%d", a[10] );
return 0;
}
C语言规定:定义时如果用a[10],则表示数组a有10个元素,其下标值范围为0到9。a[10]不属于上面定义的数组中。对a[10]进行赋值可能导致程序崩溃!
错误信息:
warning C4700: uninitialized local variable 'a' used
错误信息:
error C2440: '=' : cannot convert from 'const char [2]' to 'char'
‘=’的左边是字符类型,右边是常量char[2],不能完成赋值操作
8
许多高级语言都使用“=”符号作为关系运算符的“等于”。如BASIC程序中可以写:
if ( a = 3 ) then…
printf( "<60\n" );
default:
printf( "error\n" );
}
由于漏写了break语句,当grade值为A时,printf函数在执行完第一个语句后会接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如:
case 'A':
printf( "85~100\n" );
scanf( "%d,%d", &a, &b );
此时不用逗号而用空格或其它字符是不对的。例如:3:4。又如:
scanf("a=%d,b=%d",&a,&b);
输入应如以下形式:
a=3,b=4
13
例如,a定义为整型,b定义为浮点型
#include <stdio.h>
void main()
{
int a = 3;
voidmain ()
{
char x;
x=300;
}
300的二进制为0b100101100,赋值给x时,将赋值最后的8位,高位截去,因此x的值实际上为0b101100(即整数44)。如果将500赋给一个有符号的字符型变量时,变量内存储的值还会变成负数,由读者自行分析原因。
错误信息:
warning C4309: '=' : truncation of constant value
4
例如:
#include <stdio.h>
void main()
{
inti =0;
int sum=0;
while(i<10)
i++;
sum=sum+i;
}
本程序的目的是计算0到90的累加,但是在循环while的后面少加了花括号,累加的操作并没有在循环中执行。应该修改成这样:
while(i<10)
{
Constant out of range in comparison 在比较中常量超出范围
使用没有初始化的变量。这里指a[10]。
1
#include <stdio.h>
void main()
{
char s[100];
scanf( "%99s", &s );
}
C语言中,数组名代表该数组的起始地址。因此上面的代码中,s本身就已经是一个地址了,我们不需要再对它进行取址运算。正确的写法应该是:scanf( "%99s", s );
i++;
sum = sum + i;
}
5
voidmain()
{
int a = 5;
printf( "%d", A );
}
编译器认为a和A是两个不同的变量名,而显示出错信息。C语言规定大写字母和小写字母是不同的字符;而有些编程语言是不分大小写的。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
Bit field too large 位字段太长
Call of non-function 调用未定义的函数
Call to function with no prototype 调用函数时没有函数的说明
Cannot modify a const object 不允许修改常量对象
Case outside of switch 漏掉了case 语句
float b = 4.5;
printf( "%f%d\n", a, b );
}
编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。应该改成:
printf( "%d%f\n", a, b );
1
#include<stdio.h>
void main()
{
scanf( "%7.2f", &a );
{
int a = 0, i;
scanf( "%d", &i );
do
{
a += i;
++i;
} while ( i <= 10 );
printf( "%d", a );
}
可以看到,当输入i的值小于或等于10时,二者得到的结果相同。而当i>10时,二者结果就不同了。因为while循环是先判断后执行,而do-while循环是先执行后判断。对于大于10的数while循环的循环体一次也不执行,而do-while语句则要执行一次。
void main( )
{
int a, b;
a = 1
b = 2;
}
编译时,编译器发现“a =1”后面没有分号,就会报错。改错时,如果在编译器所说的有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。
错误信息:
error C2146: syntax error : missing ';' before identifier 'b'
y没有定义
2
例如:
#include <stdio.h>
voidmain()
{
int i;
int sum;
i = 5;
Sum = sum+i;
}
错误信息
warning C4700: uninitialized local variable 'sum' used
‘sum’在使用前没有初始化
3
例如:
#include <stdio.h>
错误信息:
error C2065: 'A' : undeclared identifier
‘A’没有定义而直接使用
error C3861: 'printf': identifier not found
没有找到‘printf’的定义。Printf是一个输出函数,定义在stdio.h中。在源程序的开始需要添加#include”stdio.h”
在’b’前面缺少’;’
10
#include <stdio.h>
void main()
{
printf( "Hello world.\n");
};
上面代码中,大括号}后面的分号(;)是毫无必要的!因为单独一个;也是合法的C语言语句,所以}后面写了;也是合法的,但是毫无必要!又如:
#include <stdio.h>
Bad character in paramenters 参数中有不适当的字符
Bad file name format in include directive 包含命令中文件名格式不正确
Bad ifdef directive synatax 编译预处理ifdef有语法错
Bad undef directive syntax编译预处理undef有语法错
break;
1
(1)
#include <stdio.h>
voidmain()
{
int a = 0, i;
scanf( "%d", &i );
while ( i <= 10 )
{
a += i;
++i;
}
printf( "%d", a );
}
(2)
#include <stdio.h>
voidmain()
6
#include <stdio.h>
voidmain()
{
float a, b;
printf( "%d", a % b );
相关文档
最新文档