Reputation: 2214
What is the difference between array[i]++
(increment outside brackets) and array[i++]
(increment inside brackets), where the array is an int array[10]
?
Upvotes: 17
Views: 123832
Reputation: 379
#include<iostream>
using namespace std;
int main()
{
int arr[]={1,2,37,40,5,7};
int i = 3;
arr[i]++;
cout<<i<<" "<<arr[i]<<endl;
arr[i++];
cout<<i<<" "<<arr[i]<<endl;
return 0;
}
Output:
3 41
4 5
In this example i = 3
, so arr[3] = 40
. It then increases the value from 40 to 41 .So arr[i]++
increments the value of this particular index and a[i++]
first increments the index and then gives the value for this index.
Upvotes: -1
Reputation: 27
Let's say we have this example, array[i++] = x[m++]
. This means that first set array[i] = x[m]
then increase the indexes like i + 1
, m + 1
.
Upvotes: 2
Reputation: 338
Here the Array[i]++
increments the value of the element array[i]
,
but array[i++]
increments the i
value which effects or changes the indication of the array element (i.e. it indicates the next element of an array after array[i]
).
Upvotes: 2
Reputation: 3725
Here array[i++]
increments the index number.
On the contrary, array[i]++
increments the data value of i
index.
Code Snippet:
#include <iostream>
using namespace std;
int main()
{
int array[] = {5, 2, 9, 7, 15};
int i = 0;
array[i]++;
printf("%d %d\n", i, array[i]);
array[i]++;
printf("%d %d\n", i, array[i]);
array[i++];
printf("%d %d\n", i, array[i]);
array[i++];
printf("%d %d\n", i, array[i]);
return 0;
}
Upvotes: 0
Reputation: 46027
int a[] = {1, 2, 3, 4, 5};
int i = 1; // Second index number of the array a[]
a[i]++;
printf("%d %d\n", i, a[i]);
a[i++];
printf("%d %d\n", i, a[i]);
Output
1 3
2 3
a[i]++
increments the element at index i
, it doesn't increment i
. And a[i++]
increments i
, not the element at index i
.
Upvotes: 33
Reputation: 612954
array[i]++
increments the value of array[i]
. The expression evaluates to array[i]
before it has been incremented.array[i++]
increments the value of i
. The expression evaluates to array[i]
, before i
has been incremented.An illustration.
Suppose that array
contains three integers, 0, 1, 2, and that i
is equal to 1.
array[i]++
changes array[1]
to 2, evaluates to 1 and leaves i
equal to 1.array[i++]
does not modify array
, evaluates to 1 and changes i
to 2.A suffix operators, which you are using here, evaluates to the value of the expression before it is incremented.
Upvotes: 26
Reputation: 22821
array[i]++
means ( *(array+i) )++
. --> Increments the Value.
array[i++]
means *( array + (i++) )
. --> Increments the Index.
Upvotes: 5