samprat
samprat

Reputation: 2214

Array increment positioning with respect to indexer in C - array[i]++ vs array[i++]

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

Answers (7)

Tanim_113
Tanim_113

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

mel
mel

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

Gouse Shaik
Gouse Shaik

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

rashedcs
rashedcs

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

taskinoor
taskinoor

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

David Heffernan
David Heffernan

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

Sadique
Sadique

Reputation: 22821

array[i]++ means ( *(array+i) )++. --> Increments the Value.

array[i++] means *( array + (i++) ). --> Increments the Index.

Upvotes: 5

Related Questions