0
假設我有一個字符串「str」。 我的for循環如下:條件檢查for循環在C
for(i=0;i<strlen(str);i++){
//do stuff
}
問題:當條件被選中,我<的strlen(STR),是的strlen(STR)部分每次循環運行計算的?或者它被存儲並且僅在第一次計算?
假設我有一個字符串「str」。 我的for循環如下:條件檢查for循環在C
for(i=0;i<strlen(str);i++){
//do stuff
}
問題:當條件被選中,我<的strlen(STR),是的strlen(STR)部分每次循環運行計算的?或者它被存儲並且僅在第一次計算?
循環中的條件表達式將在每次迭代時得到評估 - 它有就是這樣,直到(理想情況下)表達式變爲false。所以是的:strlen(str)
將被重複計算。如果字符串根本沒有改變,將其長度存儲在局部變量中會更好。
int n = strlen(str);
for (i=0; i<n; i++) {
// do stuff
}
這也將工作:
for (i=0; str[i] != '\0'; i++) {
// do stuff
}
的是,在大部分我見過他們使用strlen條件在for循環的所有節目的網站。所以我們應該使用變量來做到這一點,對吧?它應該會有更好的表現,儘管非常輕微。 – 2014-09-06 04:53:21
@guitar_geek看看這篇[文章](http://www.cprogramming.com/tips/tip/dont-use-strlen-in-a-loop-condition),它將我的觀點帶回家。 – 2014-09-06 04:54:41
如果大多數網站確實是這樣的情況,這隻能證明大多數網站都是不好的信息來源。 – 2014-09-06 05:00:05