Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[問題]for();

0 views
Skip to first unread message

追憶似水年華

unread,
May 6, 2003, 11:09:21 AM5/6/03
to
※ 引述《vng...@kkcity.com.tw》之銘言:
> ※ 引述《brianh...@bbs.sayya.org (墳墓)》之銘言:
> > 如果只會跑迴圈一次出來,何以解釋以下的 Code 是無窮回圈?
> > int main()
> > {
> > int i;
> > for ( i = 0 ; i > -1 ; i++ );
> 這樣不會 overflow 嗎?
> > }

什麼!?overflow!!
我看不出來怎樣會overflow,了不起就是陷入迴圈不可自拔罷了....
你是在講笑話嗎?

--

[1;33;41m[Master Chang.]______________________________________________ [m
[1;33;44m企鵝寶寶工作隊 | http://3ybaby.v-club.net/ [m
[1;33;44m請大家幫忙翻譯KDE | http://i18n.linux.org.tw/ [m
[1;33;44m全像光學實驗室 | http://www.ccit.edu.tw/~c3hog/master.html [m
[1;33;44m_____________________________________________________________ [m
--
[1;32m※ Origin: [33mSayYA 資訊站 [37m<bbs.sayya.org> [m
[1;31m◆ From: [36mh112-213.dorm5.ccit.edu.tw [m

Microsoft

unread,
May 7, 2003, 12:49:15 PM5/7/03
to
==> 在 Maste...@bbs.sayya.org (追憶似水年華) 的文章中提到:
> ※ 引述《vng...@kkcity.com.tw》之銘言:

> > 這樣不會 overflow 嗎?
> 什麼!?overflow!!
> 我看不出來怎樣會overflow,了不起就是陷入迴圈不可自拔罷了....
> 你是在講笑話嗎?
當 i 累加到 2^31-1 的時候,下一次累加再 test 想想看就知道會發生什麼事了
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>

新生罐裝屍塊

unread,
May 8, 2003, 1:52:08 AM5/8/03
to
※ 引述《Billga...@bbs.cis.nctu.edu.tw (Microsoft)》之銘言:

> ==> 在 Maste...@bbs.sayya.org (追憶似水年華) 的文章中提到:
> > 什麼!?overflow!!
> > 我看不出來怎樣會overflow,了不起就是陷入迴圈不可自拔罷了....
> > 你是在講笑話嗎?
> 當 i 累加到 2^31-1 的時候,下一次累加再 test 想想看就知道會發生什麼事了

再累加的話 i 會變成亂七八糟的數值, 然後沒做事
然後 i 再累加, i 又變成亂七八糟的數值, 然後沒做事
然後 i 再累加....................................


到底會發生什麼事?

--
[1;31m※ Origin: [36m逢甲蒼穹資訊網<bbs.fcu.edu.tw> [33m◆ From: [35m48.26.iecs.fcu.edu.tw [m

Believing is seeing. ^^

unread,
May 8, 2003, 5:14:46 AM5/8/03
to
※ 引述《syli...@bbs.fcu.edu.tw (新生罐裝屍塊)》之銘言:
> ※ 引述《Billga...@bbs.cis.nctu.edu.tw (Microsoft)》之銘言:

> > 當 i 累加到 2^31-1 的時候,下一次累加再 test 想想看就知道會發生什麼事了
> 再累加的話 i 會變成亂七八糟的數值, 然後沒做事
> 然後 i 再累加, i 又變成亂七八糟的數值, 然後沒做事
> 然後 i 再累加....................................
> 到底會發生什麼事?

  i 累加到 2^31-1 的時候,
  i++ 會使 i 的值變成 -2^31,
  於是 i > -1 的測試結果為 false,
  所以會跳出 for loop.
  
--
[1;32m□ Origin: [33m風 之 谷 [37mbbs.ee.ncku.edu.tw [31m□ From: [36meepc077.ee.ncku.edu.tw [m
[1;32m◆ Modify: [37m03/05/08 17:14:46 [31m□ From: [36meepc077.ee.ncku.edu.tw [m

vng...@kkcity.com.tw

unread,
May 9, 2003, 10:04:36 AM5/9/03
to
※ 引述《Marve...@bbs.ee.ncku.edu.tw (Believing is seeing. ^^)》之銘言:
> ※ 引述《syli...@bbs.fcu.edu.tw (新生罐裝屍塊)》之銘言:

> > 再累加的話 i 會變成亂七八糟的數值, 然後沒做事
> > 然後 i 再累加, i 又變成亂七八糟的數值, 然後沒做事
> > 然後 i 再累加....................................
> > 到底會發生什麼事?
>   i 累加到 2^31-1 的時候,
>   i++ 會使 i 的值變成 -2^31,
>   於是 i > -1 的測試結果為 false,
>   所以會跳出 for loop.

經過測試
這才是正解

#include <stdio.h>


int main()
{
int i;
for ( i = 0 ; i > -1 ; i++ );

printf("End!\n");
}

==
$ uname -a
SunOS mungee 5.8 Generic_108529-18 i86pc i386 i86pc
$ time ./a.out
End!
real 0m4.352s
user 0m4.190s
sys 0m0.000s
==

所以這也不是無限回圈
其實無限迴圈何必要用到變數和加法咧
一行
for (;1;);

while (1);
就可以了

--
[0m
[0m Thy speak of a [36;1mvision [0m.
[0m An [33;1mANGEL [0m, standing before thee.
[0m Tis the Angel of [31;1mLOVE [0m, " [32;1mAngelica [0m"
[0m
--
[1;32m┌───── [33m◆ [37mKKCITY [33m◆ [32m─────┐ [m [34m [44m [1;34;40m╱ [m [44m [1;34;40m╱ [m [44m [;34;40m ̄ [;34;40m ▌ [34m ̄ [44m [40m ̄ [1;34m╲╱ [31mBBS [37m 城邦 [m
[1;32m│ [31m bbs.kkcity.com.tw [32m│ [34m [46m [1;36;40m╲ [m [46m [1;36;40m╲ [m [46m [36;40m╴ ▌ ▌ ▏ [1;34m [33mKK免費撥接 [m
[1;32m└── [34m《 [0;37mFrom:210.49.215.85 [1;34m》 [32m──┘ [37m http://www.kkcity.com.tw/freeisp/ [m

0 new messages