1 / 5
文档名称:

c语言基础总结.doc

格式:doc   大小:66KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

c语言基础总结.doc

上传人:sssmppp 2020/9/2 文件大小:66 KB

下载得到文件列表

c语言基础总结.doc

相关文档

文档介绍

文档介绍::非全局变量和静态变量在定义时不H动进行初始化,初值为一个与该程序运行环境有关的随机数。不赋值或没有显示初值就肓接使用这样的变量是错误的。解决:所有变量都显示地进行初始化,建议数值变量初始化为0,指针变量初始化为NULL不考虑数值溢出的可能描述:当赋值超过此范围数值,就会产生数值溢出,得到不正确的值。解决:预先估算运行结果的可能范F乩采用可能范囤更大的,不处理负数,就用无符号类型。运算还没开始前,判断运算数是否在合理取值的范围内,超出则停止运算。采用第三方无取值范围的运算库。不用sizeof()获得类型或变量的字长描述:相同类型在不同平台上占得字节数不同。Int在16位,32位,64位系统分别占2,4,8个字节。结构体所占字节也不是所有成员字长的简单相加,而是和平台与编译器,编译项都有关系。解决:用且只用sizeof获得字长Intwriteint(intfh,inti){Returnwrite(fh,&i,sizeof(i));}4•假定类型的取值范|韦I描述:类型的取值范围与程序编译息息相关。解决:(INT-MAX, INT-…MINULONG-MAX FLT—MAX期望两个整数的运算门动获得浮点数的结果描述:两个数运算的结果还是敕数,不是浮点数void func(void){floatf=;inta=3,b=2;f=a/(float)b;printf方案:强制转换为浮点数,再运算例:voidfunc(void){Floatf=;Inta=3,b=2;f=a/b;printf (“%f,f);}不预先判除除数是否为0编译器反应:岚接写入inti=100/0,编译雅会报错,编译器对此问题沉默解决方案:先判断除数是否为0,若是0则不运算。混淆“&,I”与“&&,II”说明:他们是两种不同的运算符,有人总是弄错8使用依赖编译器求值顺序的语句描述:printf(4i%d,%d,%d,i卄,i++,M+); i=0可能输出0」.2 . 2」.0方案:按期望的顺序分别求职,再综合运算Voidfunc(void)Inta,b,c,i=0;a=i++;b=i++C=i++Printf(<4%d,%d, %d",a,b,c)使用依靠算符优先级的表达式描述;没有记住优先级,容易出错。解决:用括号明确优先计算的部分表达式过于复杂描述:(a>bllb>c)&&(o>Pllq>p)?(a-b)*c+(o-p)*q:(a*b*c)-(o*p*q)用“==”时误用用“==”比较两个浮点数描述;两个数值表面相等或者非常接近的浮点时用“二二”比较,结果可能不同解决;不用float用double 在精度运算中两个浮点数的茅的绝对值只要小于一个精度范围,就可以相等使用幻数描述:直接使用的常数解决;把幻数定义为宋或枚举,建议使川枚举。编译提示会更清晰,准确#define array-srze10Enum(array-size=10)14printf()和scanf()屮格式控制字符串与参数类型不匹配循环或判断语句以“;”结尾描述:分别表示循坏和判断语句的终结,示血的代码不算循环体或分支,而是循环和判断平行的代码解决:禁止在循环判断语句末尾出现分号,循环体为空的情况下,While(