C Primer Plus學習 18 新的運算子

2021-08-18 23:25:00 字數 2068 閱讀 3308

昨天說完了for迴圈,今天將for再鞏固一下,做個小結

【小結】

關鍵字:for

一般註解

for語句使用三個表示式控制迴圈流程,分別用分號隔開。初始化(initialize)表示式在執行for之前執行一次;然後對測試(test)表示式求值,值為真就執行一次迴圈,假就不執行;接著對更新(update)表示式求值,並再次檢查測試表示式。for語句是一種入口條件迴圈,即在執行前就決定了是否執行迴圈,因此for迴圈可能一次都不執行。

形式

for ( initialize; test; update)

statement

示例

for (n = 5; n < 20; n = n+6)

---------------------------------------------分割線-----------------------------------------

書中在這裡有給出了新的運算子:+=、-=、*=、/=、%=

這些運算子都是由算術運算子和乙個賦值運算子組成的,這麼一說就很明白了,這些運算子可能有算術運算子和賦值運算子的功能。乙個例子就能學會:

x += 1        等價於        x = x + 1

其他幾個同理即可。有一點需要注意的是,右值部分是乙個整體。

書中還有乙個逗號運算子

逗號運算子擴充套件了for迴圈的靈活度,以便在迴圈頭中包含更多的表示式。

/*postage.c -- 郵費*/

#include int main (void)

return 0;

}

程式執行結果如下:

ounces cost

1   $0.46

2   $0.66

14   $3.06

15   $3.26

16   $3.46

(這部落格的編輯器有問題,視窗裡執行結果是對齊的,複製過來就不對齊了)

該程式在初始化表示式中和更新表示式中用到了逗號運算子,使得就大多數的計算都放在了for迴圈頭中進行。

這裡展示了逗號運算子在for迴圈中的使用,其應用並不侷限於這裡(雖然這是它最常用的地方)。

逗號運算子有兩個其他性質:

書上給出了乙個使用for迴圈和逗號運算子解決的古老悖論。。。

傳說希臘有一位哲學家叫zeno,zeno認為箭永遠達不到目標。首先zeno認為箭要達到目標距離的一半,然後再達到剩餘距離的一半,然後繼續到達剩餘距離的一半,然後還繼續到達剩餘距離的一半,就這樣無窮無盡。zeno認為箭的飛行過程有分成無數的部分,所以要花費無數時間來完成這一過程。說實話我有點理解不了,這位哲學家是任何成為哲學家的,表示好奇。

/*zeno.c -- 求序列和*/

#include int main (void)

return 0;

}

輸出結果為:

enter the number of terms you want: 9

time = 1.000000 when terms = 0.

time = 1.500000 when terms = 1.

time = 1.750000 when terms = 2.

time = 1.875000 when terms = 3.

time = 1.937500 when terms = 4.

time = 1.968750 when terms = 5.

time = 1.984375 when terms = 6.

time = 1.992188 when terms = 7.

time = 1.996094 when terms = 8.

time = 1.998047 when terms = 9.

在使用了for迴圈和逗號表示式之後,程式就顯得很簡短了。當然也可以放到語句體之中,憑個人喜好吧。

4月18開始看《C Primer Plus》

好久沒有寫部落格了,之前也說過水平有限,也寫不出什麼技術部落格,只能寫些感悟。過年之後,陸續做了2 3個專案,剛開始可能不太熟悉流程,怎麼和頁面傳資料?最近乙個專案1 2天就寫完 了,真的很簡單,主要改需求 設計太浪費時間,還要花時間測試。接下來版本發布,就不用新任務了。就要靜下心來好好學一學了,學...

c primer plus學習筆記

1.變數名命名規則 重要的 1 有含義 2 只能用字母字元 數字和下劃線 3 第乙個字元不能是數字 4 區分大小寫 5 不能用c 關鍵字 2.整型 1 無符合型別不能表負值 2 char short 16 int short long 32,int 和longlong 64,long c 11 寬度...

C PrimerPlus學習筆記

if語句中判斷恒等,將常量放前,防止由於 寫成 造成的難以查詢的bug。if 0 count 若寫成 0 count 會報錯,count 0 則不會命名空間 using namespace std cout one cout two std cout one std cout two using s...