第四章 表達(dá)式與語(yǔ)句

4.1 運(yùn)算符的優(yōu)先級(jí)

B56AE4A8A8854692A95364AA3764AA5C.jpg

規(guī)則4-1-1 如果代碼行中的運(yùn)算符比較多,用括號(hào)確定表達(dá)式的操作順序,避免使用默認(rèn)的優(yōu)先級(jí)。

4.2 復(fù)合表達(dá)式

規(guī)則4-2-1 不要編寫(xiě)太復(fù)雜的復(fù)合表達(dá)式。

規(guī)則4-2-2 不要有多用途的復(fù)合表達(dá)式。

規(guī)則4-2-3 不要把程序中的復(fù)合表達(dá)式與“真正的數(shù)學(xué)表達(dá)式”混淆。

4.3 if 語(yǔ)句

4.3.1 布爾變量與零值比較

規(guī)則4-3-1不可將布爾變量直接與TRUE、FALSE或者1、0進(jìn)行比較。

假設(shè)布爾變量名字為flag,它與零值比較的標(biāo)準(zhǔn)if語(yǔ)句如下:

    if (flag)    // 表示flag為真
    if (!flag)    // 表示flag為假    

注:TRUE的值究竟是什么并沒(méi)有統(tǒng)一的標(biāo)準(zhǔn)。根據(jù)布爾類型的定義,零值為“假”(記為 FALSE),任何非零值都是“真”(記為T(mén)RUE)。

4.3.2 整型變量與零值比較

規(guī)則4-3-2應(yīng)當(dāng)將整型變量用“==”或“!=”直接與 0 比較。

if (value == 0)

4.3.3 浮點(diǎn)變量與零值比較

規(guī)則4-3-3不可將浮點(diǎn)變量用“==”或“!=”與任何數(shù)字比較。

if ((x >= -EPSION) && (x <= EPSION))    // 其中EPSION是允許的誤差(即精度)。

4.3.4 指針變量與零值比較

規(guī)則4-3-4應(yīng)當(dāng)將指針變量用“==”或“!=”與 NULL 比較。

4.3.5 對(duì) if語(yǔ)句的補(bǔ)充說(shuō)明

將if (p == NULL)誤寫(xiě)成if (p = NULL),而有意把p和NULL顛倒。編譯器認(rèn)為if (p = NULL)是合法的,但是會(huì)指出if (NULL = p)是錯(cuò)誤的,因?yàn)镹ULL不能被賦值。

程序中有時(shí)會(huì)遇到 if/else/return 的組合,應(yīng)該將如下不良風(fēng)格的程序

if (condition) 
    return x; 

return y; 

改寫(xiě)為

if (condition)
{ 
    return x;
} 
else 
{
    return y; 
} 

或者改寫(xiě)成更加簡(jiǎn)練的

return (condition ? x : y); 

4.4 循環(huán)語(yǔ)句的效率

提高循環(huán)體效率的基本辦法是降低循環(huán)體的復(fù)雜性。 

建議4-4-1 在多重循環(huán)中,如果有可能,應(yīng)當(dāng)將最長(zhǎng)的循環(huán)放在最內(nèi)層,最短的循環(huán)放在最外層,以減少 CPU 跨切循環(huán)層的次數(shù)。

建議4-4-2 如果循環(huán)體內(nèi)存在邏輯判斷,并且循環(huán)次數(shù)很大,宜將邏輯判斷移到循環(huán)體的外面。示例 4-4(c)的程序比示例 4-4(d)多執(zhí)行了 N-1 次邏輯判斷。并且由于前者老要進(jìn)行邏輯判斷,打斷了循環(huán)“流水線”作業(yè),使得編譯器不能對(duì)循環(huán)進(jìn)行優(yōu)化處理,降低了效率。如果 N 非常大,最好采用示例 4-4(d)的寫(xiě)法,可以提高效率。如果 N 非常小,兩者效率差別并不明顯,采用示例 4-4(c)的寫(xiě)法比較好,因?yàn)槌绦蚋雍?jiǎn)潔。

B445E54215CD401B93E4CA6EB28E8301.jpg

4.5 for 語(yǔ)句的循環(huán)控制變量

規(guī)則4-5-1不可在for 循環(huán)體內(nèi)修改循環(huán)變量,防止for 循環(huán)失去控制。

建議4-5-1 建議 for 語(yǔ)句的循環(huán)控制變量的取值采用“半開(kāi)半閉區(qū)間”寫(xiě)法。

4.6 switch語(yǔ)句

switch是多分支選擇語(yǔ)句。

規(guī)則4-6-1 每個(gè) case 語(yǔ)句的結(jié)尾不要忘了加 break,否則將導(dǎo)致多個(gè)分支重疊(除非有意使多個(gè)分支重疊)。

規(guī)則4-6-2 不要忘記最后那個(gè) default 分支。即使程序真的不需要 default 處理,也應(yīng)該保留語(yǔ)句 default : break; 這樣做并非多此一舉,而是為了防止別人誤以為你忘了 default 處理。

4.7 goto語(yǔ)句

跳出多重循環(huán)體中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,193評(píng)論 0 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,739評(píng)論 18 399
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,877評(píng)論 0 38
  • 1> 事件處理簡(jiǎn)介 3大事件:(主要)觸摸事件、加速計(jì)事件、遠(yuǎn)程控制事件。 什么是響應(yīng)者對(duì)象- 在iOS中不是任何...
    一個(gè)人的思考閱讀 184評(píng)論 0 0
  • 第1種愛(ài)情,你愛(ài)著她,她也愛(ài)著你。 第2種愛(ài)情,你愛(ài)著她,但她已經(jīng)不愛(ài)你了。 第3種愛(ài)情,你不再愛(ài)她了,她也不再愛(ài)...
    吃飽了睡閱讀 606評(píng)論 4 3