c - 在这个 for 循环中将调用 strlen() 多少次?

标签 c loops

下面的 strlen() 函数是否只被调用一次(存储值以供进一步比较);还是每次比较时都会调用?

for (i = 0; i < strlen(word); i++)
{ /* do stuff */ }

最佳答案

这取决于实现。通常,它每次都会被调用,但是,如果编译器可以看到 word 永远不会改变,并且 strlen 是一个纯函数(没有副作用),它可以提升电话。

参见:http://underhanded.xcott.com/?page_id=15这是一个众所周知的被利用的例子。 :-)

关于c - 在这个 for 循环中将调用 strlen() 多少次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2049480/

相关文章:

c - C中的无限循环

c - 有没有办法在 objective-c 程序中获取执行语句的顺序?

loops - 遍历文件并删除几行不同的文本

计算频谱分析仪的值

c - 我正在尝试创建一个僵尸进程

c++ - String Verifier 字符循环无法正常工作

python - 如果其他列中存在值,则在数据框中创建列

javascript - jQuery 循环中 div 的不同 CSS

c - 一次结束 C 程序的多个实例?

c - 如何防止 strcpy() 被优化