热点推荐:
您现在的位置: 电脑学习网 >> 软件专区 >> 正文

C编程技巧几列

2013-09-12 15:53:21  来源: 软件专区 
  本篇介绍的是C++的一些常用技巧。这些技巧看起来好像很不起眼,在实际应用当中却起着重要作用。这些技巧虽然是谈不上可以提高程序的编写效率,却可以为你去除一些不必要的麻烦和一些程序中不易被发现的隐患。
1.都是“=”惹的祸
  先来看看下面两个判断表达式的写法有什么不同:
  // 第一种写法:
  if( value == 0 )
  {
  ……
  }
  // 第二种写法:
  if( 0 == value ) // 推荐!
  {
  ……
  }
  value是一个变量,两个判断表达式都是判断变量value是否等于0。所不同的是,两个判断表达式的变量value和常量0的位置刚好对调了。第一个是“value == 0”,另一个是“0 == value”。
  许多程序员并不知道这两种写法有什么不同,他们通常使用的写法是“value == 0”,我在这里推荐大家最好写成“0 == value”这种形式。
  两个写法有什么不同吗?第二种写法是否比第一种写法更有效率?很遗憾,两种写法的效率是一样的。那么为什么我要推荐大家使用第二种写法呢?原因是在C++里判断两个值是否相等使用的运算符是两个等于号(==),没有人能百分之百地保证自己不会漏写一个等号。wWW.ITCOmPuTeR.COM.Cn使用第一种表达式的写法,如果漏写了一个等号的话就变成下面的样子:
  if( value = 0 ) // 严重的错误,却没有任何的错误提示和警告
  {……
  }
  上面的判断表达式,原本的意图是想判断变量value是否等于0的,但由于漏写了一个等于号,却变成了给变量value赋值为0。我们知道,在条件判断中,如果条件表达式的值是非0的话,条件就为真,否则为假。像上面那样写法,条件判断就永远为假了(如果是非0的话就永远为真)。像这样漏写一个等号的情况,条件表达式的值要么永远为真,要么永远为假。这种判断两个值是否相等的条件表达式,程序中应该有许多,有一两处漏写了一个等号并不足为奇,可怕的是程序一般都可以正常运行,而且有许多情况并不易察觉得出来有什么异样。编译器更不会给出任何的错误提示或警告,因为这种表达式是完全合法的。
  如果是换成第二种写法,而又那么不小心漏写一个等号的话,程序变成下面的样子:
  if( 0 = value ) // 不合法的表达式,编译器将给出错误提示
  {
  ……
  }
  编译程序,编译器给出以下的错误提示:
  error C2106: “=” : 左操作数必须为 l 值
  因此,我们可以轻松地知道哪里漏写了一个等号。

 


From:http://www.itcomputer.com.cn/Article/Software/201309/333.html
    Copyright © 2005-2013 电脑知识网 Computer Knowledge   All rights reserved.