運算子的優先順序:一元運算子+ - *的優先順序高於對應的二元運算子
【規則 4-1-1】 如果**行中的運算子比較多,用括號確定表示式的操作順序,避免使用預設的優先順序。
復合表示式:如a = b = c = 0
存在的理由1)書寫簡潔;2)可以提高編譯效率。
【規則 4-2-1】 不要編寫太複雜的復合表示式。
【規則 4-2-2】 不要有多用途的復合表示式。
如: d = (a = b + c) + r ; 該表示式既求 a 值又求 d 值。
【規則 4-2-3】 不要把程式中的復合表示式與「真正的數學表示式」混淆。
如: if (a < b < c) // a < b < c 是數學表示式而不是程式表示式
並不表示 :if ((a
而是成了令人費解的 if ( (a
if語句:以「與零值比較」為例
布林變數與零值比較
【規則 4-3-1】 不可將布林變數直接與 true 、false 或者1、0進行比較。
如:假設布林變數名字為 flag,它與零值比較的標準 if 語句如下:
if (flag) // 表示 flag 為真
if (!flag) // 表示 flag 為假
其它的用法都屬於不良風格, 例如:
if (flag == true)
if (flag == 1 )
if (flag == false)
if (flag == 0)
整型變數與零值比較
【規則 4-3-2】 應當將整型變數用「==」或「! =」直接與 0 比較。
如:假設整型變數的名字為 value, 它與零值比較的標準 if 語句如下:
if (value == 0)
if (value != 0)
不可模仿布林變數的風格而寫成
if (value) // 會讓人誤解 value 是布林變數
if (!value)
浮點變數與零值比較
【規則 4-3-3】 不可將浮點變數用「==」或「!=」與任何數字比較。
千萬要留意, 無論是 float 還是 double 型別的變數,都有精度限制。所以一定要避免將浮點變數用「==」或「!=」 與數字比較,應該設法轉化成「>=」或「<=」形式。
如:假設浮點變數的名字為 x,應當將
if (x == 0.0) // 隱含錯誤的比較
轉化為if ((x>=-epsinon) && (x<=epsinon))
其中 epsinon 是允許的誤差( 即精度)。
指標變數與零值比較
【規則 4-3-4】 應當將指標變數用」==」或」!=」與null比較。
對if語句的補充說明
if (null == p) 取代 if (p == null):防止將」==」誤寫成」=」,編譯器又不報錯
if (condition) 改寫成: if (condition) 或者: return (condition ? x : y);
return x;
else
迴圈語句的效率
【建議 4-4-1】 在多重迴圈中,如果有可能,應當將最長的迴圈放在最內層,最短的迴圈放在最外層,以減少 cpu 跨切迴圈層的次數。例如示例 4-4(b) 的效率比示例4-4(a) 的高。
【建議 4-4-2】 如果迴圈體內存在邏輯判斷,並且迴圈次數很大,宜將邏輯判斷移到 迴圈體的外面。如果 n 非常大,最好採用判斷邏輯外提的寫法,可以提高效率。如果 n 非常小,兩者效率差別並不明顯,不需將判斷邏輯外提,因為程式更加簡潔。
for語句的迴圈控制變數
【規則 4-5-1】 不可在 for 迴圈體內 修改迴圈變數,防止 for 迴圈失去控制。
【建議 4-5-1】 建議 for 語句的迴圈控制變數的取值採用「半開半閉區間」寫法。
switch語句
switch (variable)
【規則 4-6-1】 每個 case 語句的結尾不要忘了加 break,否則將導致多個分支重疊(除非有意使多個分支重疊)。
【規則 4-6-2】不要忘記最後那個 default 分支。 即使程式真的不需要 default 處理,也應該保留語句 default : break; 這樣做並非多此一舉,而是為了 防止別人誤以為你忘default 處理。
C C程式設計指南之基本語句
運算子的優先順序 一元運算子 的優先順序高於對應的二元運算子 規則 4 1 1 如果 行中的運算子比較多,用括號確定表示式的操作順序,避免使用預設的優先順序。復合表示式 如a b c 0 存在的理由1 書寫簡潔 2 可以提高編譯效率。規則 4 2 1 不要編寫太複雜的復合表示式。規則 4 2 2 不...
高質量C C 程式設計指南 表示式和基本語句
此系列文章實為對 高質量程式設計指南 c c語言 的重點摘要總結 本篇總結的為表示式和基本語句 運算子的優先順序 優先順序運算子 名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名...
C C 程式設計 範圍for語句
迴圈最常見的場景是對資料集合的每乙個元素進行某種操作。在c 11之前,大致是這樣的程式 int a int sum 0 for int i 0 i sizeof a sizeof a 0 i sum a i 或者是這樣 vector int v int sum 0 for auto it v.beg...