因为效率往往由编译器优化水平决定,好的编译器会准确揣摩编程者的意图,并根据CPU指令系统的特征去生成目标码,而此时目标码的结构可能跟源码已不是一回事了。
goto最好尽量避免,“结构化程序设计思想”如是说。不过那不是说效率不好,而是容易让读代码者思路混乱。
其余的跟结构化编程思想不矛盾,按说可随便用,不过还是应考虑照顾读代码者。比如若循环很长,要哼哧哼哧读到最后方知 while(true) 的话未免太那个了,显然不如开门见山 while(1) 或 for( ; ; )来得爽快。反正俺是习惯写 while(1),是好是坏另当别论。
引用: 原帖由 ddllxxrr 于 2011-5-26 19:19 发表 我平时用最多就是for
我一直搞不懂,为什么for(;;)带来的结果是死循环,初值、判定、动作都为空,编译器怎么就把for(空;空;空)翻译成死循环了,顶多就跳过这条语句吧。费解。
引用: 原帖由 David_Lee 于 2011-5-26 21:09 发表 我一直搞不懂,为什么for(;;)带来的结果是死循环,初值、判定、动作都为空,编译器怎么就把for(空;空;空)翻译成死循环了,顶多就跳过这条语句吧。费解。
好像周立功的文档里几乎都是用for的。
引用: 原帖由 wanghongyang 于 2011-5-26 22:14 发表 其实这几个死循环的运行效率是可以忽略不计的,如果真要比较那顺序为:do{ }while(true) > for( ; ; ) >= while(1),我想虽然do {} while(true)效率较高,但是我想真正用在项目上的朋友不会很多。其实我喜欢用 for ...
能不能详细解释下do{ }while(true) > for( ; ; ) >= while(1)为什么这么排,这效率怎么看