[問題] int小問題

看板C_and_CPP作者 (喵~>"<||)時間14年前 (2010/05/25 01:51), 編輯推噓6(6025)
留言31則, 8人參與, 最新討論串1/2 (看更多)
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

05/25 01:52, , 1F
local 變數
05/25 01:52, 1F

05/25 01:52, , 2F
不懂@@?  願聞其詳
05/25 01:52, 2F

05/25 01:54, , 3F
內外不一樣
05/25 01:54, 3F

05/25 01:54, , 4F
while裡面的x1的值會變成0+1
05/25 01:54, 4F

05/25 01:57, , 5F
外面宣告了一個x1,裡面又宣告了一個x1
05/25 01:57, 5F

05/25 01:58, , 6F
int x1 = x1(外面的x1) + 1;
05/25 01:58, 6F

05/25 01:59, , 7F
原po要先想清楚 int x1; 這行發生了什麼事
05/25 01:59, 7F

05/25 02:08, , 8F
簡單說while裡的int x1=x1+1;會相當於int a=a+1;
05/25 02:08, 8F

05/25 02:08, , 9F
然後你while的判斷會一直不成立變成無限迴圈
05/25 02:08, 9F

05/25 02:09, , 10F
不是就指定一個X1是一個整數嗎@@?
05/25 02:09, 10F

05/25 02:10, , 11F
喔~所以他是看外面那個X1來判斷的摟???
05/25 02:10, 11F

05/25 04:52, , 12F
迴圈裏面宣告的東西, 只有回圈裏面有用
05/25 04:52, 12F

05/25 04:53, , 13F
你裡面的 int x1 等於每跑一次回圈都重新宣告一個 x1
05/25 04:53, 13F

05/25 04:53, , 14F
至於這個 x1 值是多少, 運氣好 compiler 就會幫你設為0
05/25 04:53, 14F

05/25 04:53, , 15F
運氣不好可能是一個奇怪的值
05/25 04:53, 15F

05/25 04:55, , 16F
好習慣就是雖然是兩個不同的scopes,也不要宣告同名變數
05/25 04:55, 16F

05/25 04:58, , 17F
至於while後面的判斷式, 算在scope外, 所以他是一直拿
05/25 04:58, 17F

05/25 04:58, , 18F
外面的那個 x1=0 的值在做判斷
05/25 04:58, 18F

05/25 05:00, , 19F
想成下面的程式:
05/25 05:00, 19F

05/25 05:01, , 20F
int x1外 = 0;
05/25 05:01, 20F

05/25 05:01, , 21F
while( x1外!=5 )
05/25 05:01, 21F

05/25 05:01, , 22F
{
05/25 05:01, 22F

05/25 05:01, , 23F
int x1內 = x1內 + 1;
05/25 05:01, 23F

05/25 05:02, , 24F
cout << x1內 << endl;
05/25 05:02, 24F

05/25 05:02, , 25F
}
05/25 05:02, 25F

05/25 05:05, , 26F
你要讓迴圈內的東西能一直increase下去,變數就要宣告在
05/25 05:05, 26F

05/25 05:05, , 27F
迴圈外
05/25 05:05, 27F

05/25 05:05, , 28F
compiler在宣告時會幫你設為0的話, 裡面會不斷印出1
05/25 05:05, 28F

05/25 05:08, , 29F
實測Dev並沒有幫忙初始化, 所以裡面的x1印出是奇怪的值
05/25 05:08, 29F

05/25 05:09, , 30F
你可以在迴圈裏面最後加個 system("pause");看第一個值
05/25 05:09, 30F

05/25 19:58, , 31F
迴圈內重新宣告了吧
05/25 19:58, 31F
文章代碼(AID): #1B-hoK54 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1B-hoK54 (C_and_CPP)