c++ - rate++a,a++,a=a+1 和 a+=1 在 C 中的执行效率。假设 gcc 是编译器

标签 c++ c

<分区>

Possible Duplicate:
Is there a performance difference between i++ and ++i in C++?

对于以下的使用,请以C语言的执行时间来评价。 在一些采访中,我被问到我应该使用这些变体中的哪个以及为什么。

a++
++a
a=a+1
a+=1

最佳答案

这是 g++ -S 产生的结果:

void irrelevant_low_level_worries()
{
    int a = 0;
//  movl    $0, -4(%ebp)

    a++;
//  incl    -4(%ebp)

    ++a;
//  incl    -4(%ebp)

    a = a + 1;
//  incl    -4(%ebp)

    a += 1;
//  incl    -4(%ebp)
}

因此,即使没有任何优化器开关,所有四个语句都会编译为完全相同的机器代码。

关于c++ - rate++a,a++,a=a+1 和 a+=1 在 C 中的执行效率。假设 gcc 是编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3557489/

相关文章:

c++ - c++ 中的静态成员函数是否在多个翻译单元中复制?

c++ - 是否定义了运行时错误 C 风格转换的行为?

c++ - 有人对 SSEPlus 有任何经验吗?

c - 不完整数组类型的 p[0] 和 *p 等价

c - C 中的成员(member)运营商

C:在每一位都很重要的地方存储变量的最有效方法

c++ - 如何理解在某些情况下允许实现将非局部变量的动态初始化视为静态初始化?

c++ - 无法使用 BaseClass 的 shared_ptr 访问派生类的成员

c++ - 正则表达式有效和无效在一起

c - 并行合并排序适用于笔记本电脑,但不适用于 GPU 和 Xeon phi