熱點推薦:
您现在的位置: 電腦知識網 >> 軟件專區 >> 正文

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++裡判斷兩個值是否相等使用的運算符是兩個等於號(==),沒有人能百分之百地保證自己不會漏寫一個等號。tW.WINGWit.coM使用第一種表達式的寫法,如果漏寫了一個等號的話就變成下面的樣子:
  if( value = 0 ) // 嚴重的錯誤,卻沒有任何的錯誤提示和警告
  {……
  }
  上面的判斷表達式,原本的意圖是想判斷變量value是否等於0的,但由於漏寫了一個等於號,卻變成了給變量value賦值為0。我們知道,在條件判斷中,如果條件表達式的值是非0的話,條件就為真,否則為假。像上面那樣寫法,條件判斷就永遠為假了(如果是非0的話就永遠為真)。像這樣漏寫一個等號的情況,條件表達式的值要麼永遠為真,要麼永遠為假。這種判斷兩個值是否相等的條件表達式,程序中應該有許多,有一兩處漏寫了一個等號並不足為奇,可怕的是程序一般都可以正常運行,而且有許多情況並不易察覺得出來有什麼異樣。編譯器更不會給出任何的錯誤提示或警告,因為這種表達式是完全合法的。
  如果是換成第二種寫法,而又那麼不小心漏寫一個等號的話,程序變成下面的樣子:
  if( 0 = value ) // 不合法的表達式,編譯器將給出錯誤提示
  {
  ……
  }
  編譯程序,編譯器給出以下的錯誤提示:
  error C2106: “=” : 左操作數必須為 l 值
  因此,我們可以輕松地知道哪裡漏寫了一個等號。

 
From:http://tw.wingwit.com/Article/Software/201309/333.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.