调试程序学习2常见错误中文说明_第1页
调试程序学习2常见错误中文说明_第2页
调试程序学习2常见错误中文说明_第3页
调试程序学习2常见错误中文说明_第4页
调试程序学习2常见错误中文说明_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

★调试C程序学习资料2—Cintmain(void{inta=printf("%d",Areturn}aACintmain(void{floata,printf("%d",a%breturn},abab才可以进行求余运算。故而上面的程序是错误的,因为a和b是浮点型变量。charc;c="a";量是一对双引号括起来的字符序列。C语言规定以\0作字符串常量的结束标志,它是由系统"a"'a'\0'aBASICif(a=3)then…Cif(a==3)a=b;a3a3ab;baa3a3,a3,有些编译Ca=b=编译时,编译器发现“a1”后面没有分号,就会报错。改错时,如果在编译器所说的有错的{z=x+t=z/100;printf("%f",t);(;)C语句,所以}后面写了;也是合法的,但是毫无必要!又如:if(a%3==0);3a,i1ifa303ai+for(i=0;i<5;i++){scanf("%d",&xprintf("%d",x}5for()后加了一个分5scanf&”inta,scanf("%d%d",a,bscanf("%dd&a,&bscanf("%d%d",&a,&b输入时,不能用逗号作两个数据间的分隔符。例如:3,4scanf("%d,%d",&a,&b例如,a,binta=3;floatb=4.5;printf("%f%d\n",a,bprintf("%d%f\n",a,bscanf("%7.2f",&aswitchbreakswitch(grade){case'A':printf("85~100\n");case'B':printf("70~84\n");case'C':printf("60~69\n");case'D':printf("<60\n");printf("error\n"breakgradeAprintf行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例caseprintf("85~100\n");whiledo-whileintmain(void{inta=0,scanf("%d",&i);while(i<=10){a+=}printf("%d",areturn}intmain(void{inta=0,do

a+=

scanf("%d",&i}while(i<=10printf("%d",areturn}i10i>10whiledo-while0whiledo-whileintn=6;inta[n];C99以前,数组名后用方括号括起来必须是常量,包括常量表达式。但是在的C99标准C99intmain(void{inta[10]={1,2,3,4,5,6,7,8,9,10printf("%d",a[10]);return0;}Ca[10]a1009。a[10]不属于上面定义的数组中。对a[10]进行赋值可能导致程序!&chars[100];scanf("%99s",&sCs我们不需要再对它进行取址运算。正确的写法应该是:scanf("%99s",s);C语言编程常见错误1.AlgolPascalAdaC分配更短的符号。此外,C(abc),并且可以将赋值嵌入到一个大的的语句看起来好像是要检查x是否等于y:if(x=y)而实际上是将y的值赋值给x,并检查结果是否非零。再的一个希望跳过空格、制while(c==''||c='\t'||c=='\n')c=getc(f);'\t''\t'cc(新的)'\t'e1e2

if(x=y)if((x=y)!=0)一些C符号,如/、*或=,只有一个字符。还有些C符号,如/*、==或标识符,具有多个字符。当编译器遇到紧连在一起的/和*时,它必须决定是将这两个字符识别为两个符号还是一个单独的符号。C语言标准规定:“如果一个字符被识别为符号,则应该包一个字符,一直到不能构成符号为止。”。因此,如果/是符号的第一个字符,并且/后面*yx的值除以p所指向的值:y= /*p**/yxp。我们应该将这

y=x/*p /*p指向除数*/;y=x/(*p) /*p指向除数*/;elseif(x==0)if(y==0)elsez=x+y;}写这段程序的程序员的目的明显是想将情况分为两种:x0和x0。在第一种情况中,如果y==0,则调用error()。第二种情况中,程序执行z=x+y;和f(&z);。elseifif(x==0){if(y==0)else{z=x+}}x0if(x==0)if(y==0)}else{z=z+y;}a<b&&c<C标准规定a<b首先被求值。如果a确实小于b,c<d必须紧接着被求值以计算整个表ab,则cdab底是先取a的值,还是先取b的值,标准并没有定义。C(&&、||)指定了求值顺序。&&||C出于这个原因,下面这种将数组x中的前n个元素到数组y中的方法是不可j=while(j<n)y[j]=x[j++];y[j]在jy[j]x[j++]j=while(j<n)y[j++]=x[j];j=while(j<n)y[j]=}for(j=0;j<n;j++)y[j]=x[j];&&、||C010示“假”。&&和||运算符如果可以通过左边的操作数确定整个表达式的真假性,就不会对右边的操作数进行求值。!10返回0,因为10非零;10&&12返回1,因为10和12的0;10||121,101210:10||ff()Cnn0inti,for(i=1;i<=10;i++)a=0;inti,for(i=0;i<10;i++)a=0;getchar(int)#includeintm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论