我在 Knuth 的“计算机编程艺术”的评论中读到以下内容:
“非常‘实用性’意味着想成为 CS 专业的学生必须学习 Kernighan 在设计 C 时的错误,尤其是臭名昭著的事实,即 for 循环重复评估 for 条件,它重复 while 并且无法匹配大多数其他实现 for 循环的语言。”
( http://www.amazon.com/review/R9OVJAJQCP78N/ref=cm_cr_pr_viewpnt#R9OVJAJQCP78N )
这家伙在说什么?你怎么能实现一个 for 循环,而不仅仅是 for 循环的语法糖?
最佳答案
考虑一下:
for i:=0 to 100 do { ... }
在这种情况下,我们可以将最终值 100 替换为函数调用:
for i:=0 to final_value() do { ... }
... final_value
函数只会被调用一次。
然而,在 C 中:
for (int i=0; i<final_value(); ++i) // ...
... final_value
函数将在循环中的每次迭代中被调用,因此更详细的做法是一个好习惯:
int end = final_value();
for (int i=0; i<end; ++i) // ...
关于c++ - C for 循环的实现方式与其他语言不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/229671/