【发布时间】:2020-03-06 01:53:45
【问题描述】:
作为高级程序员键入程序时,n = 0; 看起来更高效、更简洁。
但是n = 0; 真的比if (n != 0) n = 0; 更有效率吗?
当
n更有可能是0。当
n不太可能是0。当
n绝对不确定时。
语言:C (C90)
编译器:Borland 的 Turbo C++
最少的可重现代码
void scanf();
void main()
{
int n; // 2 bytes
n=0; // Expression 1
scanf("%d",&n); // Absolutely uncertain
if(n!=0) n=0; // Expression 2
}
注意:我上面提到的代码仅供您参考。请不要随波逐流。
如果您对上述语言/标准/编译器不满意,请随时用您喜欢的语言/标准/编译器解释上述 3 种情况。
【问题讨论】:
-
用什么编译器?在哪些系统上?对于哪种类型的
n?这太宽泛了,无法回答,而且几乎可以肯定在 99.999% 的情况下不值得担心。只需输入n = 0;并继续担心实际有用的事情。 Fwiw,就我个人而言,我怀疑分支是否比重新分配相同值所带来的任何微小损失更便宜。 -
这样想,无论你选择哪一个,它总是需要至少一个指令(比较或存储),所以......
-
这两个程序是否具有相同的外部行为,我们无法判断。如果它们具有相同的行为,它们可以产生相同的机器代码。如果它们不相同,那么其中一个可能比另一个更快...
-
这个问题的答案取决于类型和改变功能的因果关系。太宽泛
标签: c if-statement variables machine-code low-level-code