Samprat
Cuál es la diferencia entre array[i]++
(incremento fuera de los corchetes) y array[i++]
(incremento entre paréntesis), donde la matriz es un int array[10]
?
tarea
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]);
Producción
1 3
2 3
a[i]++
incrementa el elemento en el índice i
no se incrementa i
. Y a[i++]
incrementos i
no el elemento en el índice i
.
-
Lo que falta en esta respuesta es lo que
a[i]++
ya[i++]
evaluar a.–David Heffernan
29 de septiembre de 2011 a las 9:56
-
Es un poco confuso porque la matriz valores están en aproximadamente el mismo rango que la matriz índices. ¿Puede compensar los valores (digamos, por 60), para que no haya superposición entre índices y valores?
-Peter Mortensen
13 de enero de 2020 a las 3:38
-
El resultado del ejemplo es engañoso, ya que el acceso de
a[i++]
en la segunda declaración en realidad devuelve el valor en el índice1
que se ha incrementado hasta3
antes. Sé consciente dex = a[i++];
es equivalente a la secuencia de declaracionesx = a[i]; i++;
Entonces i se usa como índice antes se incrementa.-Richard Neumann
24 de enero de 2021 a las 18:17
David Heffernan
array[i]++
incrementa el valor dearray[i]
. La expresión se evalúa comoarray[i]
antes de que se haya incrementado.array[i++]
incrementa el valor dei
. La expresión se evalúa comoarray[i]
antesi
se ha incrementado.
Una ilustración.
Suponer que array
contiene tres enteros, 0, 1, 2, y que i
es igual a 1.
array[i]++
cambiosarray[1]
a 2, evalúa a 1 y salei
igual a 1array[i++]
no modificaarray
evalúa a 1 y cambiai
a 2.
Los operadores de sufijo, que está utilizando aquí, se evalúan como el valor de la expresión antes de que se incremente.
array[i]++
medio ( *(array+i) )++
. –> Incrementa el Valor.
array[i++]
medio *( array + (i++) )
. –> Incrementa el Índice.
gouse shaik
Aquí el Array[i]++
incrementa el valor del elemento array[i]
pero array[i++]
incrementa el i
valor que afecta o cambia la indicación del elemento de la matriz (es decir, indica el siguiente elemento de una matriz después de array[i]
).
Digamos que tenemos este ejemplo, array[i++] = x[m++]
. Esto significa que el primer conjunto array[i] = x[m]
luego aumentar los índices como i + 1
, m + 1
.
Aquí array[i++]
incrementa el número de índice.
De lo contrario, array[i]++
incrementa el valor de los datos de i
índice.
Fragmento de código:
#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;
}
WD
#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;
}
Producción:
3 41
4 5
En este ejemplo i = 3
entonces arr[3] = 40
. Luego aumenta el valor de 40 a 41. Entonces arr[i]++
incrementa el valor de este índice particular y a[i++]
primero incrementa el índice y luego da el valor de este índice.