while
和for
語句在執行迴圈體之前檢查條件,do while
語句先執行迴圈體,然後再檢查條件。
只要條件為真,while 語句就重複的執行迴圈體,它的語法形式如下:
while (conditon)
statement
在 while 結構中,只要 condition 的求值結果為真就一直執行 statement。 condition 不能為空,如果 condition 第一次求值就得 false,statement 一次都不執行。
定義在 while 條件部分或者 while 迴圈體內的變數每次迭代都經歷從建立到銷毀的過程。
使用 while 迴圈
當不確定到底要迭代多少次時,使用 while 迴圈比較合適。想在迴圈結束後訪問迴圈控制變數也應該使用 while.
vector<
int> v;
int i;
while
(cin >> i)
v.push_back
(i);
// 尋找第乙個負值元素
auto beg = v.
begin()
;while
(beg != v.
end()&&
*beg >0)
++beg;
if(beg == v.
end())
// 此時我們直到 v 中的所有元素都大於等於 0
for 語句的語法形式是:
for (init-statement; condition; expreesion)
statement;
init-statement
負責初始化乙個值,必須是以下三種形式中的一種:宣告語句、表示式語句或者空語句。
condition
控制迴圈的條件,
expression
負責修改init-statement
初始化的變數。
傳統 for 迴圈的執行流程
for 語句頭中定義的物件只在 for 迴圈體可見。
for 語句頭中多重定義
init-statement
可以定義多個物件,但是只能有一條宣告語句,因此所有變數的基礎型別必須相同
// 記錄下 v 的大小,當到達原來的最後乙個元素後結束迴圈
for(
decltype
(v.size()
) i =
0, sz = v.
size()
; i != sz;
++i)
v.push_back
(v[i]
);
省略 for 語句頭的某些部分
for 語句頭能省略掉init-statement
、condition
和expression
中的任何乙個(或者全部)。
如果無需初始化,則我們可使用一條空語句作為init-statement
。
省略condition
的效果等價於在條件部分寫了乙個 true。因為條件的值永遠是 true,所以在迴圈體內必須有語句負責退出迴圈,否則迴圈就會無休止地執行下去。
省略expression
要求條件部分或者迴圈體必須改變迭代變數的值。
範圍 for 語句可以遍歷容器或其他序列的所有元素。語法形式如下:
for (declaration : expression)
statement;
expression
表示的必須是乙個序列,比如用花括號括起來的初始值列表或者vector
或string
等型別的物件,這些物件的共同特點是擁有能返回迭代器的begin
和end
成員。
declaration
定義乙個變數,序列中的每個元素都得能轉換成該變數的型別。
do while 語句先執行迴圈體後檢查條件。語法形式如下:
do
statement
while (condition);
注意:condition
使用的變數必須定義在迴圈體之外。 第五章 語句
由於c primer第五版採用的c 11新標準,手頭沒有支援c 11的編譯器,推薦大家用ideone,支援c 14並且可以輸入輸出。從今天開始整理自己做的課後習題,網上答案很多,但自己寫的也是一種不一樣的思路。exercise 5.20 include include using namespace...
第五章 條件語句
使用條件語句能完成一些判斷工作,使程式的走向改變。因此條件語句也叫做分支語句。條件語句有if else和switch兩種。if else的格式為 if 條件表示式 else 其中 條件表示式 返回乙個布林值,當其值為真時執行if後的語句,否則執行else後的語句。如 if yourage 18 sy...
《C Primer》第五章 語句
身為c 的零基礎初學者,短期內把 c primer 啃下來是乙個比較笨但是有效的方法,一方面可以掌握比較規範的c 語法 避免被專案中亂七八糟的風格帶跑偏 另一方面又可以全面地了解c 語法以及c 11新標準 後續要做的事情就剩下查漏補缺,不斷完善自己的知識體系 個人感覺從零學習一門新知識比較好的方法是...