Just My Life & My Work

[C++] For 迴圈 (For Loop)

剛在看Progressive Radiosity by Eric Chen while he worked for Apple的程式碼,看到它用了還滿特殊的for loop,一開始還以為他寫錯,後來想想,執行過後並沒有發生記憶體存取錯誤的警告訊息,隨後自己寫了程式來測試……

直接來看程式碼吧~

/**
	Theme: For loop
	Compiler: Dev C++ 4.9.9.2
	Date: 100/05/10
	Author: ShengWen
	Blog: https://cg2010studio.wordpress.com/
*/
#include<iostream>
using namespace std;
int main(){
	int number[10]={1,2,3,4,5,6,7};
	for(int i=10;i--;){
		cout<<i<<':';
		cout<<number[i]<<endl;
	}
	system("pause");
	return EXIT_SUCCESS;
}

如果是一般人的話,你會怎麼寫呢?當然就是把for那一行改成:

for(int i=10-1;i>=0;i–)

這樣子跑出來的結果一模一樣!

9:0
8:0
7:0
6:7
5:6
4:5
3:4
2:3
1:2
0:1
請按任意鍵繼續 . . .

道理是因為i初始化為10後,會隨即執行i–,比較i是否為0,接著i變為9,就可以無誤地存取number陣列[9]。最後一回合的i為1,接著執行i–,比較i是否為0,因為是i–而非–i,所以i在此時依然是1,接著i變為0,存取number陣列[0]。

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲