電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
6版跟8版差在哪?

 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念
上一篇主題 :: 下一篇主題  
發表人 內容
satanupup
喜歡上這裡的冒險者


註冊時間: 2007-05-29
文章: 80

68.10 果凍幣

發表發表於: 2007-8-10, PM 1:11 星期五    文章主題: 6版跟8版差在哪? 引言回覆

我發現啊
visual c++ 6版的
我是8版的
常常有沒定意義型態的存在
像是
for(int i=SnakeLength; i>=1; i--)
for(i=SnakeLength; i>=1; i--)
有時後他們上一行有加int下ㄧ行卻忽略了
我還要幫他補上
這是怎麼回事啊?
不只你介紹的貪食蛇的那個網站有這個問題
我看的Windows程式設計使用MFC第二版(他也是用6版的
也有這個問題

話說回來
2008版出了,是測試版。
回頂端
檢視會員個人資料 發送私人訊息
yag
Site Admin


註冊時間: 2007-05-02
文章: 688

2673.35 果凍幣

發表發表於: 2007-8-10, PM 5:24 星期五    文章主題: Re: 6版跟8版差在哪? 引言回覆

我原本的寫錯了,為了避免誤導別人,刪除一部份內容。感謝happylin的指正。

在VC++ 7之後,於for的初始狀態欄裡宣告變數,要注意變數的範疇以及生存週期都只在此for迴圈的大刮號之內,離開了for,它就自動消滅了。

比如說:
代碼:
for(int i=SnakeLength; i>=1; i--)
{
    ...    // 在大刮號內可以使用i
}
int b = i;    // Error,i 為未宣告之變數

如上所示,i只存活於for迴圈內,如果你有很多for迴圈,最好是把i給提出來宣告,不然就會重複產生自動變數跟消滅自動變數,這對效能應該有所影響。


yag 在 2007-8-13, AM 11:06 星期一 作了第 2 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
happylin
略有貢獻的成員


註冊時間: 2007-07-26
文章: 70

127.34 果凍幣

發表發表於: 2007-8-13, AM 10:03 星期一    文章主題: Re: 6版跟8版差在哪? 引言回覆

satanupup 寫到:
我發現啊
visual c++ 6版的
我是8版的
常常有沒定意義型態的存在
像是
for(int i=SnakeLength; i>=1; i--)
for(i=SnakeLength; i>=1; i--)
有時後他們上一行有加int下ㄧ行卻忽略了
我還要幫他補上
這是怎麼回事啊?
不只你介紹的貪食蛇的那個網站有這個問題
我看的Windows程式設計使用MFC第二版(他也是用6版的
也有這個問題

話說回來
2008版出了,是測試版。

VC++ 6
for( int x=0; ... )
是可以用的. 但是她有bug, x 的使用範圍會跑出for 的{ } 之外.
也就是說
for( int x = 0 ..... )
{
.....
}
x = ?? ; //<< 到此. x 還活這. 且是for( x = 0 ) 當中的那一個x
回頂端
檢視會員個人資料 發送私人訊息
yag
Site Admin


註冊時間: 2007-05-02
文章: 688

2673.35 果凍幣

發表發表於: 2007-8-13, AM 10:52 星期一    文章主題: Re: 6版跟8版差在哪? 引言回覆

happylin 寫到:
VC++ 6
for( int x=0; ... )
是可以用的. 但是她有bug, x 的使用範圍會跑出for 的{ } 之外.
也就是說
for( int x = 0 ..... )
{
.....
}
x = ?? ; //<< 到此. x 還活這. 且是for( x = 0 ) 當中的那一個x

咦,還真的可以用@@"

奇怪,我是去哪裡記來不能用的印象~"~

總之...剛查了一下,說是VC++ 6裡,在for的初紿條件欄宣告的變數,會活到包住此for迴圈的大刮號底

所以如果要讓程式可以同時在VC++ 6以及其後版本都能編譯,可以用以下的方式:
代碼:
int sum = 0;
{
    for( int x = 0; x < 10; x++ )
        sum += x;
}

int another_sum = 0;
{
    for( int x = 0; x < 20; x++ )
        another_sum += x;
}

只要將for迴圈用大刮號包住,就可以確保在VC++ 6中,也不會出現重複定義的錯誤。

另外...就是如happylin所說

因為VC++ 6中,for的初始條件欄裡宣告的變數,會活到for迴圈的外面來

所以satanupup才會發現VC++ 6版本的程式碼很多上一行有加int下一行就忽略了

因為加了就會產生重複定義的錯誤,不加才是能夠compile的。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念 所有的時間均為 台灣時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作