【发布时间】:2011-11-20 06:37:32
【问题描述】:
在x = x + 1 中,x 是否被评估了两次?如果是这样,这是否意味着在x += 1 中,x 只评估一次?如何根据编译器中间代码评估这两个表达式?
例如,x++ 可能意味着:获取x 的位置,将x 的内容加载到寄存器中,并在内存中增加x 的值。
我还读到x += 1 在x 不是简单变量而是涉及数组的表达式时很有用。任何想法为什么会这样?
【问题讨论】:
-
这听起来像是很多毫无根据的假设,尤其是标题。我看不出一个比另一个更高效的原因,我有理由相信大多数 C 编译器并非如此。
-
一个物有所值的编译器会将两个表达式编译为相同的目标代码。如果您担心性能:测量,测量不同的代码、不同的编译标志、不同的资源使用情况、不同的一切。
-
你知道 x += 1 比 x = x + 1 更有效吗?你看过生成的目标代码吗?
-
找一些17岁以下的书怎么样?
-
询问 UDT 是一个不同的问题。这个问题是关于 C 的。
标签: c performance increment