程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 高質量C++/C編程指南--表達式和基本語句

高質量C++/C編程指南--表達式和基本語句

編輯:C++入門知識

  讀者可能懷疑:連if、for、while、goto、switch這樣簡單的東西也要探討編程風格,是不是小題大做?我真的發覺很多程序員用隱含錯誤的方式寫表達式和基本語句,我自己也犯過類似的錯誤。表達式和語句都屬於C++/C的短語結構語法。它們看似簡單,但使用時隱患比較多。本章歸納了正確使用表達式和語句的一些規則與建議。

  4.1 運算符的優先級

  C++/C語言的運算符有數十個,運算符的優先級與結合律如表4-1所示。注意一元運算符 + - * 的優先級高於對應的二元運算符。

  優先級運算符結合律從

  高

  到

  低

  排

  列

( ) [ ] -> .從左至右! ~ ++ -- (類型) sizeof + - * &從右至左* / %從左至右+ -從左至右<< >>從左至右< <= > >=從左至右== !=從左至右&從左至右^從左至右|從左至右&&從左至右||從右至左? :從右至左= += -= *= /= %= &= ^= |= <<= >>=從左至右

  表4-1 運算符的優先級與結合律

  【規則4-1-1】如果代碼行中的運算符比較多,用括號確定表達式的操作順序,避免使用默認的優先級。

  由於將表4-1熟記是比較困難的,為了防止產生歧義並提高可讀性,應當用括號確定表達式的操作順序。例如:

  word = (high << 8) | low

  if ((a | b) && (a & c)) 

  4.2 復合表達式

  如 a = b = c = 0這樣的表達式稱為復合表達式。允許復合表達式存在的理由是:(1)書寫簡潔;(2)可以提高編譯效率。但要防止濫用復合表達式。

  【規則4-2-1】不要編寫太復雜的復合表達式。

  例如:

  i = a >= b && c < d && c + f <= g + h ; // 復合表達式過於復雜

  【規則4-2-2】不要有多用途的復合表達式。

  例如:

  d = (a = b + c) + r ; 

  該表達式既求a值又求d值。應該拆分為兩個獨立的語句:

  a = b + c;

  d = a + r;

  【規則4-2-3】不要把程序中的復合表達式與“真正的數學表達式”混淆。

  例如: 

  if (a < b < c) // a < b < c是數學表達式而不是程序表達式

  並不表示 if ((a<b) && (b<c))

  而是成了令人費解的 if ( (a<b)<c )

  4.3 if 語句

  if語句是C++/C語言中最簡單、最常用的語句,然而很多程序員用隱含錯誤的方式寫if語句。本節以“與零值比較”為例,展開討論。

  4.3.1 布爾變量與零值比較

  【規則4-3-1】不可將布爾變量直接與TRUE、FALSE或者1、0進行比較。

  根據布爾類型的語義,零值為“假”(記為FALSE),任何非零值都是“真”(記為TRUE)。TRUE的值究竟是什麼並沒有統一的標准。

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved