Re: [問題] for迴圈的小問題...。

看板C_and_CPP作者 (最愛朴素妍)時間15年前 (2010/10/28 22:41), 編輯推噓15(1506)
留言21則, 9人參與, 最新討論串3/4 (看更多)
這邊很適合跟 while 迴圈一起做討論, int i = 0; for( i; i < 1; ++i ) { std::cout<<i<<"\n";//這邊是迴圈裡。 } std::cout<<i<<"\n";//這邊是迴圈外。 關於執行順序倒也不用背, 試著寫出和它效力相等的 while 迴圈, 一切就會明朗許多 int i = 0; // 開始新的 scope, 所以可以定義同名的變數來遮蓋 // 外面的 { i; // 這行跟沒寫一樣 while( i < 1 ) { // 以下是 for 迴圈的本體 std::cout<<i<<"\n";//這邊是迴圈裡。 // 以上是 for 迴圈的本體 ++i; } } // 結束新的 scope, 迴圈內定義的變數都不能使用 std::cout<<i<<"\n";//這邊是迴圈外。 想像這些掉換程式碼順序的動作編譯器會幫你完成, for 的 語法可以讓這些步進的程式碼聚集在一起, 不像 while般凌 亂, 試著執行這個等價的 while迴圈, 你就可以知道值的變 化. -- ◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█ T-ara版怎麼去 ████◢█████s ~> T-ara ███ █ ◢█歡迎您的光臨 ███████████恩靜智妍孝敏 ███ ██ 素妍居麗寶藍 ████◥██◤ █████ψmakigoto123 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.115 ※ 編輯: loveme00835 來自: 140.121.197.115 (10/28 22:46)

10/28 22:47, , 1F
我比較擔心你寫while後順序差更多~反而讓他想半天....
10/28 22:47, 1F

10/28 22:56, , 2F
i的變化,在loop結束之後,其變化依舊是存在的,對嗎?
10/28 22:56, 2F

10/28 22:57, , 3F
原本以為,迴圈結束之後,在迴圈外時,i又會變初始狀態了。
10/28 22:57, 3F

10/28 23:00, , 4F
樓上說的是在迴圈裡宣告的那種
10/28 23:00, 4F
在迴圈裡定義的那種是屬於新的 scope裡的東西, 跟最 前面的 i 無關 不過VC6來說, 如果寫成這樣 : for( int i = 0; i < 10; ++i ) ; int i = 2; // 再次定義 i 編譯器會報錯, 原因是對他而言, 這樣的寫法跟下面的 for 是一樣的 : int i = 0; for( ; i < 10; ++i ) ; int i = 2; // 再次定義 i 容易讓人混淆...

10/28 23:07, , 5F
是建立一個迴圈,就有一個新的獨立的scope嗎?
10/28 23:07, 5F

10/28 23:10, , 6F
應該是每一個 {} 裡. 另外, 一般來說, 程式不會自己跑出
10/28 23:10, 6F

10/28 23:11, , 7F
你沒有寫code的東西來, 所以除非你在什麼地方讓i設成初
10/28 23:11, 7F

10/28 23:11, , 8F
始值, 沒有哪個變數會自動變初始狀態@_@"
10/28 23:11, 8F

10/28 23:12, , 9F
如果不考慮C++ ctor/dtor/ooxx的feature和隱式轉型的話.
10/28 23:12, 9F

10/28 23:14, , 10F
C89能不能在迴圈裡宣告?
10/28 23:14, 10F

10/28 23:14, , 11F
我應該說定義
10/28 23:14, 11F
不能在 for header裡定義, 但是可以在 body 裡定義

10/28 23:15, , 12F
C99以後才有?
10/28 23:15, 12F
我手上只有 C99的規格書, 也不太清楚是從什麼時候才 有, 不過 gcc是這樣告訴我的 : 'for' loop initial declarations are only allowed in C99 mode

10/28 23:22, , 13F
是C99開始有沒錯 不過之前各家編譯器就有實作
10/28 23:22, 13F

10/28 23:29, , 14F
因為C++先有這功能?
10/28 23:29, 14F
我對 C 語言不熟, 有請板大...Orz

10/28 23:34, , 15F
p 大好神! ※ 編輯: loveme00835 來自: 140.121.197.115 (10/28 23:36)

10/28 23:37, , 16F
推p大好神Orz
10/28 23:37, 16F

10/28 23:47, , 17F
我覺得做這份網頁的人很佛心,省了大家很多時間
10/28 23:47, 17F

10/28 23:56, , 18F
我只知道其中幾個而已..orz
10/28 23:56, 18F

10/29 11:50, , 19F
推p大好神 m(_ _)m
10/29 11:50, 19F

10/29 20:44, , 20F
這網頁太棒了!
10/29 20:44, 20F

10/30 22:16, , 21F
真的是大推~~~~~
10/30 22:16, 21F
文章代碼(AID): #1CoOk0c5 (C_and_CPP)
文章代碼(AID): #1CoOk0c5 (C_and_CPP)