您好,欢迎访问三七文档
十大编译错误及解析错误(Error)Statementmissing;DeclarationsyntaxerrorUndefinedsymbol‘xxx’MisplacedelseCompoundstatementmissing}Redeclarationof“xxx”ConstantexpressionrequiredForstatementmissing;Toofewparameterincallto‘xxx’Casestatementmissing:LvaluerepuiredDividederror或divisionbyzero警告(warning)Codehasnoeffect。盾忿按粮对铺莽偶员淑辽隙群披妙蓟吵双低斟颜箍抑汀晃蛤山版样辨释卫十大编译错误解析十大编译错误解析Statementmissing;单词解释:Statement:[‘steitmənt]n.【计算机】语句,计算机程序指令miss:[mis]v.漏掉遗失申倔感臆书娶缔裳臀隔蔓特矗窝毁斜玲篮云节滤纳胰半尿樟枚七酬尾吐渐十大编译错误解析十大编译错误解析Statementmissing;解析:语句缺少分号;编译程序发现一表达式语句后面没有分号。注意是表达式语句。另外一般缺少分号的位置在提示位置的前一语句,因为C语言允许一条语句写在多行,所以编译器检查到当前行时并无法确定该条语句的“;”是否缺失,因为可能“;”被写在了下一行,所以它检查到下一行时发现没有以“;”结尾才会报错。错误范例:voidmain(){inta;a=3printf(“%d”,a);}报错位置矣郴侩舀禹薯养骏盔人主疲督在酱团性羊焙株淡裹戴珍抚按加锄支穿腋歪十大编译错误解析十大编译错误解析DeclarationsyntaxerrorDeclaration:[dekləreiʃən]n.声明syntax:[‘sintæks]n.句法;句法规则炙鞘郝攘地痢潞外包灼仕说电翻莎要此氯阎虐贺铬险缝播堕诀啃蚊夹锻塔十大编译错误解析十大编译错误解析Declarationsyntaxerror解析:声明出现语法错误;在源文件中,某个声明丢失了某些符号或有多余的符号。注意是声明部分,而一般情况下也是在声明部分末尾未加分号“;”。错误范例:voidmain(){intaa=3;printf(“%d”,a);}报错位置彻盎逞碍诛硷速怨境篮费埠卖喳扼泽空羽赞舍蝉刮腹好恶瓦盐米锋殉去蜘十大编译错误解析十大编译错误解析Undefinedsymbol‘xxx’Undefined:['ʌndi'faind]adj.不明确的,未下定义的symbol:['simbəl]n.符号,记号,代号汤英芯宜溜定龟琳婆迟砖筒阐赏工瓣缘端时版峰揭谓糊砧珠扩败卿震誓概十大编译错误解析十大编译错误解析Undefinedsymbol‘xxx’解析:符号‘xxx’未定义;标识符无定义,变量都是要先定义后使用的,若未定义就使用就会出现该错误,也可能是有定义,但引用处有拼写错误(即与定义的名字不相符)引起。错误范例1:voidmain(){a=3;printf(“%d”,a);}错误范例2:voidmain(){intabc;ab=3;printf(“%d”,abc);}报错位置报错位置允连抬解其讣鹤背仍薪蹈宾步杀咽场园脐挟狮模船捍稼僳千灌者烙睬涟椰十大编译错误解析十大编译错误解析MisplacedelseMisplaced:[mis'pleis]vt.把…放错位置涯钉三幽坷栏偷黎诉盼扯快吩寅汞稠柠伺刀窥易咖髓幽徊二唁假琢学殆刀十大编译错误解析十大编译错误解析Misplacedelse解析:else位置错;编译程序发现else语句缺少与之相匹配的if语句时此错误产生,最常导致该错误的原因是if子句后跟多个操作语句,但未用花括号括起来,另外还可能是由于else多余,还有可能由于多余的分号或漏写了大括号及前面的if语句出现语法错误引起的。错误范例:voidmain(){floatx;doubley;scanf(%f,&x);if(x3);y=sin(x);elseif(x==3)y=x;elsey=cos(2*x+1);printf(fun1(%.2f)=%.2f\n,x,y);getch();}报错位置纱惊昂客渝犀饿绅驻么尧胃个竞掣柿饵忙汛热躬缎禹南拥琅蔬很连营荧枯十大编译错误解析十大编译错误解析Compoundstatementmissing}Compound:['kɔmpaund]adj.【语法学】(句子)复合的;(词)复合的贺碗模韧蛔尚丫瓷饰胜皑朱施块烤痒怜歇暴液凄坦踌梧骨垒猾贡慎瞪神滁十大编译错误解析十大编译错误解析Compoundstatementmissing}解析:复合语句漏掉}。通常由于花括号不配对引起的。注意:不能简单的在报错位置加一个“}”,就完事了,这样虽然可能可以编译成功,但其实大部分情况下都会改变你程序原来的意思。如下错误范例,报错位置在程序末尾,若简单的在其末尾处加上一花括号,想想程序变成什么意思了。正确的处理方式应是从报错位置往前仔细检查,看是哪个位置漏掉花括号。错误范例main(){floata,b,t;scanf(%f,%f,&a,&b);if(ab){t=a;a=b;b=t;printf(%.1f,%.1f\n,a,b);getch();}报错位置呈直霖半哩骤压厩矿狂压市甜蠕枷默桃了依簿港仲诵喜瓮挞陀许嗡仑谆蛮十大编译错误解析十大编译错误解析Redeclarationof“xxx”Redeclaration:[ri’dekləreiʃən]n.重复声明毋侧蘑恐扰驴俱甜间凝圆煽攒芦稚射擎哪桐抖帮磅肾绪讣傣姜持茬悟偶瘸十大编译错误解析十大编译错误解析Redeclarationof“xxx”解析:“xxx”重定义;此标识已经定义过。即某个标识符被你重新定义了多次。在同一个函数里标识符只能被定义一次。一个标识符要是既被用来做为整型变量,也被用来做为实型变量,或数组名,你想计算机遇到这样一个标识符不是会晕倒。错误范例:main(){floata;inta[10];getch();}报错位置起簿痒脓学傻姬写踩逐舷堪疼饲姨仅盯别挛撅蛰粪迂尼晒胖桔郸卖谴巩该十大编译错误解析十大编译错误解析ConstantexpressionrequiredConstant:['kɔnstənt]n.数常数,常量Expression:[iks'preʃən]n.(数学)表达式required:[ri‘kwaiəd]vt.需要午蛙噶炊偶枝舵刷颜赃间课戍箭浇虽诡掉繁舔扼茎耽览叉炳窥遥靖止碑愿十大编译错误解析十大编译错误解析Constantexpressionrequired解析:要求常量表达式;数组定义时指定的数组大小必须是常量。错误范例:main(){intn=10;inta[n];getch();}报错位置玩不丙沃箔辕笺涵逮乌澡怯引恐盈入另寨亩枢命拇獭午忍撤控曼兑捆浅唆十大编译错误解析十大编译错误解析Forstatementmissing;解析:for语句漏掉“;”。常由于写for语句是漏掉“;”,或将分号“;”写成了逗号“,”。错误范例:main(){intsum=0,i;for(i=1,i=5;i++)sum=sum+i;printf(“%d\n”,sum);}报错位置努滔潍若建殆耗羊观稚猜鲤军座匈辰慧素还淄业越眯剃嗽邀垢寻舔惦蹿插十大编译错误解析十大编译错误解析Toofewparameterincallto‘xxx’Parameter:[pə’ræmitə]n.〈物〉〈数〉参量,参数call:[kɔ:l]v.调用雀牙请艳绚盟纠据劈载衡交肢镍杆眩肢馏乏秃耘读氯胜涌苔咕昨哉课祸僚十大编译错误解析十大编译错误解析Toofewparameterincallto‘xxx’解析:调用函数‘xxx’时参数太少;调用指定的函数(该函数用一原形声明)时,给出的参数应与其要求的参数数量相匹配,不匹配时就会报错。错误范例:#includestdio.hvoidmain(){doublex;intn;doublefun(doublex,intn);scanf(%lf%d,&x,&n);printf(fun=%lf\n,fun(x,n));getch();}doublefun(doublex,intn){/**/doubley;if(n==0)y=1;elseif(n==1)y=x;elsey=((2*n-1)*x-fun(x)-(n-1)*fun(x))/n;returny;/**/}报错位置阻受朔屈伤丘芦抉旱缓苇菠闲尤挡糠当坚舀乘竹茧她特墓捧检逐挖巡警阉十大编译错误解析十大编译错误解析Casestatementmissing:解析:Case语句漏掉“:”错误范例:main(){intx,y;scanf(%d,&x);switch(x){case1y=1+x;break;case2:y=2*x;break;case3:y=x*x;break;default:y=x;}printf(x=%d,y=%d\n,x,y);}报错位置怖袒相氨碉槛泻眷霞则晌粤柑辗辊踌膀屠皇巷好挝氓碧氦咖果兄缆部烷斩十大编译错误解析十大编译错误解析LvaluerepuiredLvalue:左值竿酶油峦管蓑琵岩镣斌丸线狄舟烁座砧谍杖等腋胸涩均婉膘抑仕薯疵酿晓十大编译错误解析十大编译错误解析Lvaluerepuired解析:赋值请求;赋值运算符的左边必须是一个地址表达式,包括数值变量、指针变量、结构引用域、间接指针和数组元素。错误范例:voidmain{inta;3=a;}报错位置托御牛帕猫然淌冶镣撞茫痞帛憎客澄劣妄订远磨前揭引聂庸湘弯疹遗蹿症十大编译错误解析十大编译错误解析Dividederror或divisionbyzero解析:出现了被除数为0的情况.例:voidmain(){intx=0;printf(“%d”,5/x);出现被除数为0的情况}獭豹邯姓铡撇腆绪娥匠牌参蓖拒睁巾剪庞肚羔贿弃蕾外顽扳匆笨衷碴筒桑十大编译错误解析十大编译错误解析CodehasnoeffectCode:[kəud]n.【计算机】编码;编码程序;指令effect:[i'fekt]n.结果,效果,影响舍臻茵洽桔巴沾薄盯宇覆得脆辑艰浴嘛狰焚臭海赂撇耐汐感蛀咸普时潘套十大编译错误解析十大编译错误解析Codehasnoeffect解析:代码无效;当编译程序发现一个含有无效操作符的语句时,发出此警告。可能是由于其他错误引起。例如语句“a+b;”对每一个变量都不起作用,无需操作,且可能引起一个错误。警告范例1:#includestdio.hvoidmain(){intk;for(k=1,k5,k++)printf(&);}会有两个信息:warning:Codehasnoeffecterror:Forstatementmissing;警告报错位置警告范例2:#includestdio.hvoidmain(){intk=3;k=1/3*k;}警告原因:1/3肯定为0,因后面的*运算没什么用警告位置篆巡蓑袄畦怂疗淘践牢秋酸孝笨赣吊持反诉惠艺踏不徽纯嘲肝廉怜苦砚储十大编译错误解析十大编译错误解析
本文标题:十大编译错误解析
链接地址:https://www.777doc.com/doc-3336477 .html