设为首页 加入收藏

TOP

表达式和基本语句(三)
2013-01-25 17:51:50 来源: 作者: 【 】 浏览:1630
Tags:表达式 基本 语句

 

  15

  ,

  逗号运算符

  表达式,表达式,…

  左到右

  从左向右顺序运算

  运算符优先级表的出处

  运算符不难记,优先级和结合性才是比较难记的!

  所以建议:如果代码行中的运算符比较多,用括号确定表达式的操作顺序比较好。能避免使用默认的优先级,尤其在忘记优先级的情况下。

  if语句(与零值比较)

  布尔变量与零值比较:

  不可将布尔变量直接与TRUE、FALSE或1、0进行比较

  正确做法如下:

  [cpp]

  if(flag)//表示flag为真

  if(!flag)//表示flag为假

  //下面的属于不良风格

  if(flag==TRUE)

  if(flag==FALSE)

  if(flag==1)

  if(flag==0)

  整型变量与零值比较:

  应当将整型变量用"=="或"!="直接与0比较

  正确做法如下:

  [cpp]

  if(value==0)

  if(value!=0)

  //以下的写法会让人误解为布尔变量

  if(value)

  if(!value)

  浮点变量与零值比较:

  不可将浮点变量用"=="或"!="与任何数字比较

  因为浮点类型具有精度限制,所以应该设法转化为">="或"<="形式

  所以应该将

  [cpp]

  if(x==0.0)

  转化为

  [cpp]

  if((x>=-EPSINON)&&(x<=EPSINON))//其中EPSINON是允许的误差(即精度)

  指针变量与零值比较:

  应将指针变量用"=="或"!="与NULL比较

  尽管NULL的值与0相同,但是两者意义不同。

  [cpp]viewplaincopyprint

  if(p==NULL)

  if(p!=NULL)

  //以下写法让人误解是整型变量

  if(p==0)

  if(p!=0)

  //以下写法让人误解是布尔变量

  if(p)

  if(!p)

  有时候可能会看到if(NULL==p)这种比较古怪的格式,这并不是程序写错了,而是程序员为了防止将if(p==NULL)误写成if(p=NULL)。编译器认为if(p=NULL)是合法的,但会指出if(NULL=p)是错误的,因为其不能被赋值。

  循环语句的效率

  建议:

  在多重循环中,如果有可能,我们应该尽力将最长循环放在最内层,最短放在最外层。以减少CPU跨切循环层的次数

  如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面

  不可在for循环体内修改循环变量,防止for循环失去控制

  建议for语句的循环控制变量的取值采用"半开半闭区间"写法

  switch语句

  每个case语句的结尾都须加上break,除非有意使多个分支重叠

  不要忘记最后那个default分支,即使程序不需要,也须保留。因为这是为了防止别人误以为你忘了default处理www.2cto.com

  goto语句

  虽然goto会破坏结构化设计风格。它可能会跳过了某些对象的构造、变量的初始化、重要的计算等语句而造成错误或隐患。也因此goto通常不被推荐使用。但其的一个作用是不能忽略的:就是从多重循环一下子就能跳到循环外,不需要多个break语句。

        

首页 上一页 1 2 3 4 5 下一页 尾页 3/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++结构体占内存大小的判断 下一篇Effective C++ 资源管..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: