成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

EasyC++,C++ 中的 For 循環

開發 后端
在編程當中我們經常會遇到需要重復執行的步驟,想要讓計算機能夠重復執行某些邏輯,就需要使用循環。

[[432273]]

大家好,我是梁唐。

這是EasyC++系列的第19篇,簡單聊聊C++當中的for循環。

想要追求更好閱讀體驗的同學,可以點擊文末的「閱讀原文」,訪問github倉庫。

for 循環

在編程當中我們經常會遇到需要重復執行的步驟,想要讓計算機能夠重復執行某些邏輯,就需要使用循環。

在C++當中,循環有三種類型,分別是for循環、while循環和do while循環。其中前兩者使用較多,最后一個很少使用。

基礎用法

求1 + 2 + 3 + ... + 100的和,使用for循環實現:

  1. int ret = 0; 
  2. int i; 
  3. for (i = 1; i <= 100; i++) { 
  4.     ret += i; 

這里的i++表示自增操作,是i+=1的簡寫,也可以寫成++i。不過++i和i++并不能完全混用,我們將會在之后的內容當中進行闡述。

根據C++ Primer當中的定義,for循環可以分成三個部分。第一個部分是初始化,在這個for循環當中,我們把循環因子i初始化成了1。第二個部分是判斷條件,也就是for循環的執行條件,在什么情況下需要執行循環。第三個部分是更新循環因子,比如在這個例子當中,我們當前的i加入了ret之后,自增1變成了下一個將要累加的數。最后一個部分就是花括號當中的執行體,也就是每次循環需要執行的內容。

寫成通用形式就是:

  1. for (initialization; test-expression; update-expression) { 
  2.     body; 

初始化、判斷條件以及更新因子這三個部分使用分號分隔。如果循環要執行的內容只包含一條語句,花括號也可以不寫。不過為了保證全局的代碼風格統一,最好還是統一使用花括號。

test-expression決定循環是否結束,因此,在每一次body開始執行之前,都需要進行一次test-expression的判斷。當test-expression為true時,才會執行body中的語句。

test-expression并不一定需要是一個bool值,C++會進行強制轉換。比如對于int類型,0值會被轉換為false,而其他值都會轉換成true。如:

  1. int ret = 0; 
  2. int i; 
  3. for (i = 100; i; i--) { 
  4.     ret += i; 

這段邏輯和上面一樣,同樣是計算了1到100累加的值。只不過這里我們進行的是倒序相加,循環的執行條件為i >= 0。當i=0時結束,我們的判斷條件可以寫成i。int型的i會被強制轉換成bool型,當i=0時,值為false,循環結束。其中自減符的用法和自增類似。

進階用法

首先,我們可以將循環因子的聲明寫入for循環當中:

  1. // version1 
  2. int i; 
  3. for (i = 0; i < 100; i++) ret += i; 
  4.  
  5. // version2 
  6. for (int i = 0; i < 100; i++) ret += i; 

這樣有兩個好處,第一是簡化了代碼,將i的聲明語句寫入了for循環當中,可讀性也更好。另一點是限定了i這個變量的使用范圍,在for循環當中聲明的變量,它的作用域也只有for循環,出了循環之后,i這個變量將消失。

不過在一些老舊的編譯器(如VC6.0)當中并不會這樣,循環當中聲明的變量依然會繼續存在。

另外initialization; test-expression; update-expression這三條語句都不是必須的,可以根據我們的需要進行省略。

比如for循環所需要的初始化工作之前已經完成,那么就可以省略initialization:

  1. int i = 0; 
  2. for (; i < 100; i++) ret += i; 

比如我們也可以將循環的結束條件放在for循環的body當中,如:

  1. for (int i = 0;; i++) { 
  2.     if (i > 100) break; 
  3.     ret += i; 

我們的更新條件同樣也可以放在body中:

  1. for (int i = 0; i < 100;) { 
  2.     ret += i;  
  3.     i++; 

甚至,我們可以極端一點,三個條件都省略:

  1. int i = 0; 
  2. for (;;) { 
  3.     if (i > 100) break; 
  4.     ret += i; 
  5.     i++; 

同樣,我們更新的條件也不一定只能自增或自減,其他的任何邏輯也都可以。正因此,C++當中的for循環是非常靈活的, 使用得當完全可以代替while循環和do while循環。

 

不過除非必要,我們還是要盡量遵守代碼規范,不要省略條件,這樣代碼可讀性也會更好一些。

 

責任編輯:武曉燕 來源: Coder梁
相關推薦

2021-10-21 18:52:00

C++數組存儲

2021-10-27 16:27:20

C++指針操控

2021-10-29 09:44:50

C++指針變量

2021-11-01 15:35:31

C++自增自減

2021-12-12 18:13:54

C++This指針

2021-12-29 20:31:40

C++多態指針

2021-12-08 10:43:09

C++實現

2021-11-26 00:03:20

C++編譯常量

2021-12-09 10:56:50

函數C++原型

2021-10-20 14:03:06

C++運算符類型

2021-12-10 10:45:36

C++函數Stock

2021-10-26 00:19:51

C++結構體存儲

2021-12-30 14:58:58

C++函數動態

2021-10-26 15:36:17

C++枚舉值類型

2021-11-09 10:38:16

C++Const指針

2021-12-11 19:02:03

函數C++對象

2021-11-27 11:50:09

C++靜態持續

2021-11-10 10:48:36

C++函數指針

2021-12-05 18:20:42

C++空間特性

2021-12-15 10:25:57

C++運算符重載
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人精品一区二 | 日韩欧美天堂 | 欧美日韩国产高清 | 欧美日韩国产在线观看 | 四虎影院在线观看免费视频 | 亚洲视频一区二区三区 | 国产专区视频 | 精品欧美一区二区三区久久久小说 | 日韩1区 | 欧美在线观看一区 | 成人福利在线 | 亚洲免费在线 | 爱高潮www亚洲精品 中文字幕免费视频 | 91.色| 午夜影视免费片在线观看 | 日韩精品免费播放 | 中文字幕一页二页 | 在线婷婷 | 成人欧美一区二区 | 国产高清免费 | 午夜噜噜噜| 二区视频| 91欧美精品成人综合在线观看 | 日韩无 | 在线免费观看黄色 | 成人免费一区二区三区视频网站 | 亚洲另类视频 | 在线国产一区二区三区 | 欧洲精品码一区二区三区免费看 | 中文字幕视频免费 | 亚洲国产一区二区三区四区 | 99re在线视频 | 成人在线免费观看 | 欧美黄页 | 精品亚洲一区二区三区 | 国产精品久久久久久久一区二区 | 日韩人体视频 | 欧美日韩国产一区二区三区 | 男女在线免费观看 | 日韩三级 | av在线免费观看网站 |