设为首页 加入收藏

TOP

建议2:避免那些由运算符引发的混乱
2013-10-07 14:46:39 来源: 作者: 【 】 浏览:53
Tags:建议 避免 那些 运算 引发 混乱

建议2:避免那些由运算符引发的混乱

一般,C++(www.cppentry.com)被认为是C的超集。C++(www.cppentry.com)确实从它的前辈C那里继承了很多东西,比如一套含义相当混乱模糊的运算符。由于C/C++(www.cppentry.com)语法规则的灵活性,以致那些粗心的程序员常会使用错误的运算符,进而引发不必要的麻烦。下面的代码就是一个典型的例子:

  1. if(nValue = 0)  
  2. {  
  3.    // do something if nValue is not zero.  

显然,程序员的本意是要写if( nValue == 0 )。不幸的是,上述语句虽未达成程序员的本意,但它却完全是合法的,编译器不会给出任何错误提示。C++(www.cppentry.com)语句首先会将nValue赋值为0,然后再判断nValue是否为非零。结果就是if条件始终不能被满足,大括号中的代码永远不会被执行。

针对=和==之间的问题,通过良好的代码习惯可以避免,代码如下所示:

  1. if(0 == nValue)  
  2. {  
  3.    // do something if nValue is not zero.  

换句话说,就是将0和nValue的位置交换。此时,如果你再写出if( 0 = nValue)这样的代码,编译器会直截了当地提示,发生了错误,编译失败。原因在于0 = nValue 这样的代码在C++(www.cppentry.com)语法中是不允许的,常数0不能作为左值来使用。

除了上述运算符,其他几对容易弄错的运算符是&(按位与)和&&(与),以及|(按位或)和||(或)。对于这两对运算符,能够避免错误的只有细心。

请记住:

不要混淆=和==、&和&&、|与||这三对运算符之间的差别,用细心和良好的代码习惯避免由于运算符混乱带来的麻烦。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++ 11右值引用的理解 下一篇建议0:不要让main函数返回void(..

评论

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