上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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 文章: 689
2704.11 果凍幣
|
發表於: 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 文章: 689
2704.11 果凍幣
|
發表於: 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的。 |
|
回頂端 |
|
|
|