C運行庫字符串的=比較是怎樣的呢?兩個字符串s1和s1,它不是對s1進行循環就是對s2循環,由於兩個串的長度可能不同,那麽它對哪個進行循環是影嚮結果的。爲了執行效率,祗對其中一個循環,而要精確比較,則需要對兩個都循環一遍,所以速度會慢。C運行庫有可能改動循環對象,從左邊變爲右邊,結果就不相同。vfp和大多數程序一樣,底層是使用系統内置的C運行庫msvc???.DLL,這個庫中函數的機制變了,效果也會變。
在XP和Win7/8/10下vfp的某些檢索結果差異,尤其是涉及優化模式下索引查找的,都會發生這種問題,大致的原因應在這裏。當然,這祇是我個人的猜測性看法,畢竟不是系統和vfp的作者,他們自己才清楚。
C的短路求値,惹來許多麻煩,其實習慣寫C程序的都知道。vfp中Rushmore優化之所以要求使用=而不是==,也是因爲它要用短路求値機制,快就快在省了一趟循環上。爲什麽不可靠,明白它這種快的原理,自然也知道不可靠的原因是這麽來的。
[此贴子已经被作者于2016-2-29 13:22编辑过]