tawhidmonowar's blog

By tawhidmonowar, history, 20 months ago, In English

In programming, “++i” and “i++” are both used to increment the value of a variable by 1, but the difference is in the order in which the increment operation and the use of the variable occur.

When it comes to the difference between “++i” and “i++”, it’s important to understand how each operator works. “++i” is known as the pre-increment operator, which increments the value of ‘i’ immediately and returns the incremented value. On the other hand, “i++” is known as the post-increment operator, which increments the value of ‘i’ but returns the original value that ‘i’ held before being incremented.

Example:

Code

In terms of performance, “++i” is sometimes faster than “i++” and is never slower than "i++". For intrinsic types like int, it doesn’t matter: “++i” and “i++” are the same speed. However, for class types like iterators, “++i” very well might be faster than “i++” since the latter might make a copy of the this object.

In conclusion, while there may be some performance differences between “++i” and “i++”, it’s generally recommended to use “++i” unless you specifically want the postfix semantics.

I hope this information will be helpful to you.

  • Vote: I like it
  • +36
  • Vote: I do not like it

| Write comment?
»
20 months ago, # |
  Vote: I like it +22 Vote: I do not like it

Based

»
20 months ago, # |
Rev. 2   Vote: I like it +10 Vote: I do not like it

Remember that, most of the time compiler is smarter than you think.

  • »
    »
    20 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Absolutely! It's important to acknowledge that compilers are incredibly intelligent and often optimize our code in ways we might not anticipate. Understanding how compilers work can help us write more efficient and effective code. Thank you for highlighting this valuable point!

    • »
      »
      »
      18 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Understanding how compilers work

      I suppose it would be nicer to have some Assembly code (or perhaps some C++ code with similar steps).

»
20 months ago, # |
  Vote: I like it +2 Vote: I do not like it

In many cases, the compiler will optimize i++ to ++i, so it's not necessary to use ++i everywhere in code. I personally just use post-increment because that's how I like my code to look.

»
18 months ago, # |
  Vote: I like it +9 Vote: I do not like it

If using this to speed up your code by 1 nanoseconds matter so much I recommend just finding a better approach

»
18 months ago, # |
  Vote: I like it +3 Vote: I do not like it

Good entry but I will try to more elaborate on "why"

Foo& Foo::operator++()   // called for ++i
{
    this->data += 1;
    return *this;
}

Foo Foo::operator++(int ignored_dummy_value)   // called for i++
{
    Foo tmp(*this);   // variable "tmp" cannot be optimized away by the compiler
    ++(*this);
    return tmp;
}  

i++ is usually slower due to the fact that it creates a new temporary object for its operation whereas ++i works directly on the object