The pre and post increment (and decrement) operator is the same in C++ as it is in C.
The '+=' operator behaves like a pre increment operator.
++a (plus plus a) is pre-incrementing operator to aa=10;printf("%d",++a); /* it will print 11 as ++a increment first a by 1 then prints it */printf("%d",a++); /*it will printf 10 as it is post _ increment operator , it prints the value a first then increment it by 1 */
In C, the ++ operator means to increment the object associated with it. If you said xyz++; for instance, you would increment xyz. (There are pre-increment and post-increment forms, but that is out of scope for this question.) When the C language was enhanced, the new language was called C++, implying that C++ was the "next", or "incremented", version of C.
Postfix expressions are expressions where the operator is at the end of the expression. These include the "++" (increment) and "--" (decrement) operators. Most Java expressions use in-fix notation (e.g. "a + b") but the increment and decrement operators can be postfix ("e.g. "a++" to increment variable a) or even prefix (e.g. "++a").
The prefix increment operator is overloaded as operator++() while the postfix increment operator is overloaded as operator++(int).
For both cases, the ++ operator increments the integer by one. The difference lies in when it makes that increment. Take the following for example: int B = 3 A = ++B // A = 4, B = 4 --------------- int B = 3 A = B++ //A = 3, B = 4 In the prefix example, the increment occurs before the assignment. In the suffix example, the increment occurs after the assignment.
int a, b; b = 5; /* post-increment operator */ a = b++; /* a is now 5, and b is now 6. */ /* pre-increment operator */ a = ++b; /* a and b are now both 7 */
increment operator increments the variable by 1 at a time and decrement operator decrements by 1 in this we have two types increments pre_increment and post increment. In pre_increment the original value is incremented by 1 and assign the new value n=10 i=++n then i =11 In post increment the original value is assigned and after it increments value by 1. n=10 i=n++ then i=10 example: k=5 i=k++ + ++k i=? ans: in first k++ value is 5 second ++k value is 7 i=5+7=12
There is not a way to post a good model and good programming solution. You will have to make your own post.
The pre-increment operator accepts no parameters and returns the same object (by reference) after incrementing. The post-increment operator accepts an unused (dummy) integer parameter and returns a copy of the object (by value) that is made immediately prior to incrementing the object. Note that it is good practice to always use the pre-increment operator even if a post-increment operator exists. The only time you should ever use a post-increment is when you actually store the return value. If you don't store the return value then you will end up making an unnecessary copy, which is highly inefficient. With primitive data types that are less than or equal in length to a pointer this isn't a major issue, but it's good practice nonetheless. If you do it for primitives then you're far more likely to remember to do it for class instances as well. The following example emulates an integer type with pre-increment and post-increment operators implemented: class Simple { public: // Construction: Simple(int data = 0):m_data(data){} Simple(const Simple& simple):m_data(simple.m_data){} public: // Assignment: Simple& operator= (const Simple& simple) { m_data = simple.m_data; return( *this ); } // pre-increment: Simple& operator++ () { // no parameters! ++m_data; // increment this object return( *this ); } // return a reference to this object // post-increment: Simple operator++(int) { // int parameter (not used)! Simple copy( *this ); // call the copy constructor ++m_data; // increment this object return( copy ); } // return the copy (by value) private: int m_data; };
When you overload the -- and ++ operators in C++, if you want the pre version, aka --var, simply declare the function without an argument; whereas if you want the post version, aka var--, simply declare the function with an argument of type int. class abc { public: abc& operator++(); // pre-increment form abc& operator++(int); // post-increment form ... }; abc::operator++() { ... pre increment stuff return *this; } abc::operator++(int) { ... post increment stuff return *this; }
Write your program and if you are having a problem post it here with a description of the problem you are having. What you are asking is for someone to do your homework for you.