看板 C_and_CPP 關於我們 聯絡資訊
DEV C++   int x1=0; while ( x1 != 5 ) { int x1 = x1 + 1; cout<<x1<<endl; } 為什麼while迴圈裡面加了INT後 ,他數字就會狂跑下去, 而不加INT他會正確跑出0~5。 以上 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.35.19.53
Donze:local 變數 05/25 01:52
a77d4e06:不懂@@?  願聞其詳 05/25 01:52
That5566is78:內外不一樣 05/25 01:54
loveflames:while裡面的x1的值會變成0+1 05/25 01:54
ducksteven:外面宣告了一個x1,裡面又宣告了一個x1 05/25 01:57
loveflames:int x1 = x1(外面的x1) + 1; 05/25 01:58
james732:原po要先想清楚 int x1; 這行發生了什麼事 05/25 01:59
Donze:簡單說while裡的int x1=x1+1;會相當於int a=a+1; 05/25 02:08
Donze:然後你while的判斷會一直不成立變成無限迴圈 05/25 02:08
a77d4e06:不是就指定一個X1是一個整數嗎@@? 05/25 02:09
a77d4e06:喔~所以他是看外面那個X1來判斷的摟??? 05/25 02:10
walker2009:迴圈裏面宣告的東西, 只有回圈裏面有用 05/25 04:52
walker2009:你裡面的 int x1 等於每跑一次回圈都重新宣告一個 x1 05/25 04:53
walker2009:至於這個 x1 值是多少, 運氣好 compiler 就會幫你設為0 05/25 04:53
walker2009:運氣不好可能是一個奇怪的值 05/25 04:53
walker2009:好習慣就是雖然是兩個不同的scopes,也不要宣告同名變數 05/25 04:55
walker2009:至於while後面的判斷式, 算在scope外, 所以他是一直拿 05/25 04:58
walker2009:外面的那個 x1=0 的值在做判斷 05/25 04:58
walker2009:想成下面的程式: 05/25 05:00
walker2009:int x1外 = 0; 05/25 05:01
walker2009:while( x1外!=5 ) 05/25 05:01
walker2009:{ 05/25 05:01
walker2009: int x1內 = x1內 + 1; 05/25 05:01
walker2009: cout << x1內 << endl; 05/25 05:02
walker2009:} 05/25 05:02
walker2009:你要讓迴圈內的東西能一直increase下去,變數就要宣告在 05/25 05:05
walker2009:迴圈外 05/25 05:05
walker2009:compiler在宣告時會幫你設為0的話, 裡面會不斷印出1 05/25 05:05
walker2009:實測Dev並沒有幫忙初始化, 所以裡面的x1印出是奇怪的值 05/25 05:08
walker2009:你可以在迴圈裏面最後加個 system("pause");看第一個值 05/25 05:09
j094097:迴圈內重新宣告了吧 05/25 19:58