欢迎来到天天文库
浏览记录
ID:32365893
大小:30.00 KB
页数:4页
时间:2019-02-03
《c c经典教程(四)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、本文由2012shijiebei贡献doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。伍亿人才招聘网—人才基地,企业动力,群英汇聚在伍亿!C++/C经典教程(四)经典教程(第四章表达式和基本语句读者可能怀疑:连if、for、while、goto、switch这样简单的东西也要探讨编程风格,是不是小题大做?我真的发觉很多程序员用隐含错误的方式写表达式和基本语句,我自己也犯过类似的错误。表达式和语句都属于C++/C的短语结构语法。它们看似简单,但使用时隐患比较多。本章归纳了正确使用
2、表达式和语句的一些规则与建议。4.1运算符的优先级C++/C语言的运算符有数十个,运算符的优先级与结合律如表4-1所示。注意一元运算符+-*的优先级高于对应的二元运算符。优先级()[]->.!~++--(类型)sizeof运算符从左至右从右至左结合律从+-*&*/%从左至右从左至右从左至右从左至右从左至右从左至右从左至右从左至右从左至右从右至左从右至左从左至右高+<<>>到<<=>>===!=低&^排
3、&&列
4、
5、?:=+=-=*=/=%=&=^=伍亿人才招聘网—人才基地,企业动力,群英汇聚在伍亿!
6、=<<=>>
7、=表4-1运算符的优先级与结合律ll级。【规则4-1-1】如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先由于将表4-1熟记是比较困难的,为了防止产生歧义并提高可读性,应当用括号确定表达式的操作顺序。例如:word=(high<<8)
8、lowif((a
9、b)&&(a&c))4.2复合表达式如a=b=c=0这样的表达式称为复合表达式。允许复合表达式存在的理由是:(1)书写简洁;(2)可以提高编译效率。但要防止滥用复合表达式。ll【规则4-2-1】不要编写太复杂的复合表达式。例如:i=a>
10、=b&&c=-EPSINON)&&(x<=EPSI
11、NON))其中EPSINON是允许的误差(即精度)。4.3.4指针变量与零值比较ll【规则4-3-4】应当将指针变量用“==”或“!=”与NULL比较。指针变量的零值是“空”(记为NULL)。尽管NULL的值与0相同,但是两者意义不同。假设指针变量的名字为p,它与零值比较的标准if语句如下:if(p==NULL)//p与NULL显式比较,强调p是指针变量if(p!=NULL)不要写成if(p==0)//容易让人误解p是整型变量if(p!=0)或者if(p)//容易让人误解p是布尔变量if(!p)4.3.5对if
12、语句的补充说明有时候我们可能会看到if(NULL==p)这样古怪的格式。不是程序写错了,是程序员为了防止将if(p==NULL)误写成if(p=NULL),而有意把p和NULL颠倒。编译器认为if(p=NULL)是合法的,但是会指出if(NULL=p)是错误的,因为NULL不能被赋值。伍亿人才招聘网—人才基地,企业动力,群英汇聚在伍亿!程序中有时会遇到if/else/return的组合,应该将如下不良风格的程序if(condition)returnx;returny;改写为if(condition){retur
13、nx;}else{returny;}或者改写成更加简练的return(condition?x:y);4.4循环语句的效率C++/C循环语句中,for语句使用频率最高,while语句其次,do语句很少用。本节重点论述循环体的效率。提高循环体效率的基本办法是降低循环体的复杂性。ll【建议4-4-1】在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。例如示例4-4(b)的效率比示例4-4(a)的高。for(row=0;row<100;row++){for(col
14、=0;col<5;col++){sum=sum+a[row][col];}for(col=0;col<5;col++){for(row=0;row<100;row++){sum=sum+a[row][col];}伍亿人才招聘网—人才基地,企业动力,群英汇聚在伍亿!}}示例4-4(a)低效率:长循环在最外层示例4-4(b)高效率:长循环在最内层ll【建议4-4-2】如果循环体内存在逻辑判
此文档下载收益归作者所有