2011-01-12 12 views
0

関数がFORループのループテストの一部である場合、その関数はループのすべての反復で呼び出されるか、ループを設定するための最初の反復のみが呼び出されます。FORループのループテスト部分内の関数は、繰り返しごとに呼び出されますか?

for (i = 0; i < strlen(someString); i++) { 
    // Do Something 
} 

ループの前に変数を定義する方が良いですか?その値は文字列の長さですか?

int length = strlen(someString); 

for (i = 0; i < length; i++) { 
    // Do Something 
} 
+1

は、それが評価されます、自問してください: 'のために(int型私= 0; isDone(I);私は++) {...} 'あなたは答えを知っていると思うので、あなたの質問に対する答えを知っていると思います。 :) –

答えて

0

それは、言語に依存する(およびメソッド呼び出しがテストの一部として存在する場合、メソッド呼び出しは、各反復を変更しない場合、コンパイラが決定することができるかどうか)

、VB .NETは一度評価し、毎回評価します。

この示す最近のSOの質問がありました:あなたは、関数呼び出しを使用してテスト式を交換した場合Why does C# execute Math.Sqrt() more slowly than VB.NET?

0

はい、すべての反復でforループの条件がチェックされます。呼び出し元の関数がすべて高価な場合は、必ず変数に値を格納する必要があります。しかし、もしあなたが短いループを持っていれば、それは本当に差をつけません。いくつかの状況では例えば

関連する問題