标题说明了一切.一般的教授和程序员是否有任何理由写作
if ( x >= 1 )
Run Code Online (Sandbox Code Playgroud)
代替
if ( x > 0 )
Run Code Online (Sandbox Code Playgroud)
?
这里有一个性能考虑因素 - 在某些情况下,CPU 与 0 进行比较比与 1 进行比较更快。聪明的编译器可能能够对此进行优化,但在可能的情况下与 0 进行比较通常是更好的做法。
编辑:对此进行一些澄清 - 处理器有一个“零”标志,当算术运算或比较指令的结果为零时,该标志就会被设置。还有一个“负面”标志。“比较”指令实际上或多或少与“减法”指令相同,只是不存储结果,而是设置标志。
它确实取决于上下文,但如果该变量刚刚作为算术运算的结果被设置,并且现在为 0,则零标志已经被设置,并且不需要比较指令来确定 x > 0。为1,需要与常量1进行比较,设置零标志,满足条件。
对于(伪代码)示例,一些编译器(我见过 Delphi 这样做)会优化
for x = 0 to 10 { print "hello world " }
Run Code Online (Sandbox Code Playgroud)
到
for x = 10 down to 0 { .. }
Run Code Online (Sandbox Code Playgroud)
只是因为它不需要每次都“将 x 与 10 进行比较”,因为由于 x 递减,在最后一次迭代中已经设置了零标志。当然,只有当循环中未引用 x 时,它才能执行此操作,否则它将更改功能。
维基百科对“零”标志有进一步的说明:http://en.wikipedia.org/wiki/Zero_flag
| 归档时间: |
|
| 查看次数: |
901 次 |
| 最近记录: |