推 ZCH:我比較擔心你寫while後順序差更多~反而讓他想半天.... 10/28 22:47
推 mabus:i的變化,在loop結束之後,其變化依舊是存在的,對嗎? 10/28 22:56
→ mabus:原本以為,迴圈結束之後,在迴圈外時,i又會變初始狀態了。 10/28 22:57
推 loveflames:樓上說的是在迴圈裡宣告的那種 10/28 23:00
在迴圈裡定義的那種是屬於新的 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
容易讓人混淆...
推 mabus:是建立一個迴圈,就有一個新的獨立的scope嗎? 10/28 23:07
推 VictorTom:應該是每一個 {} 裡. 另外, 一般來說, 程式不會自己跑出 10/28 23:10
→ VictorTom:你沒有寫code的東西來, 所以除非你在什麼地方讓i設成初 10/28 23:11
→ VictorTom:始值, 沒有哪個變數會自動變初始狀態@_@" 10/28 23:11
→ VictorTom:如果不考慮C++ ctor/dtor/ooxx的feature和隱式轉型的話. 10/28 23:12
推 loveflames:C89能不能在迴圈裡宣告? 10/28 23:14
→ loveflames:我應該說定義 10/28 23:14
不能在 for header裡定義, 但是可以在 body 裡定義
→ loveflames:C99以後才有? 10/28 23:15
我手上只有 C99的規格書, 也不太清楚是從什麼時候才
有, 不過 gcc是這樣告訴我的 :
'for' loop initial declarations are only allowed in C99 mode
推 nowar100:是C99開始有沒錯 不過之前各家編譯器就有實作 10/28 23:22
推 loveflames:因為C++先有這功能? 10/28 23:29
我對 C 語言不熟, 有請板大...Orz
p 大好神!
※ 編輯: loveme00835 來自: 140.121.197.115 (10/28 23:36)
推 VictorTom:推p大好神Orz 10/28 23:37
推 purpose:我覺得做這份網頁的人很佛心,省了大家很多時間 10/28 23:47
推 loveflames:我只知道其中幾個而已..orz 10/28 23:56
推 goldie:推p大好神 m(_ _)m 10/29 11:50
推 tomap41017:這網頁太棒了! 10/29 20:44
推 a60301:真的是大推~~~~~ 10/30 22:16