Dado que ninguna otra alternativa ha abordado Could someone please explain this to me?
Creo que lo haré:
j++
es taquigrafía, que no es una operación real (bien lo que realmente es, pero hay que tener conmigo para la explicación)
j++
es realmente igual a la operación j = j + 1;
excepto que no es una macro o algo que hace reemplazo en línea. Hay muchas discusiones aquí sobre las operaciones de i+++++i
y lo que eso significa (porque podría ser intepreted como i++ + ++i
O (i++)++ + i
que nos lleva a:.. i++
frente ++i
Se llaman los operadores post-increment
y pre-increment
Puede Puedes adivinar por qué se llaman así La parte importante es cómo se utilizan en tareas Por ejemplo, se podría hacer:?. j=i++;
o j=++i;
ahora haremos un experimento ejemplo:
// declare them all with the same value, for clarity and debug flow purposes ;)
int i = 0;
int j = 0;
int k = 0;
// yes we could have already set the value to 5 before, but I chose not to.
i = 5;
j = i++;
k = ++i;
print(i, j, k);
//pretend this command prints them out nicely
//to the console screen or something, it's an example
¿Cuáles son los valores de i, j y k?
te voy a dar las respuestas y te permiten trabajar a cabo;)
i = 7, j = 5, k = 7;
Ese es el poder de los operadores de incremento de pre y post, y los peligros de su uso incorrecto. Pero aquí está la forma alternativa de escribir el mismo orden de las operaciones:
// declare them all with the same value, for clarity and debug flow purposes ;)
int i = 0;
int j = 0;
int k = 0;
// yes we could have already set the value to 5 before, but I chose not to.
i = 5;
j = i;
i = i + 1; //post-increment
i = i + 1; //pre-increment
k = i;
print(i, j, k);
//pretend this command prints them out nicely
//to the console screen or something, it's an example
Ok, ahora que te he mostrado cómo funciona el operador ++
, vamos a examinar por qué no funciona para j+3
... Recuerda cómo Lo llamé "taquigrafía" antes? Eso es todo, vea el segundo ejemplo, porque eso es efectivamente lo que hace el compilador antes de usar el comando (es más complicado que eso, pero eso no es para las primeras explicaciones). Entonces verás que la "taquigrafía expandida" tiene i =
Y i + 1
que es todo lo que tu solicitud tiene.
Esto se remonta a las matemáticas. Se define una función donde f(x) = mx + b
o una ecuación y = mx + b
entonces ¿cómo llamamos mx + b
... ciertamente no es una función o ecuación. A lo sumo es una expresión. Lo cual es todo j+3
es, una expresión. Una expresión sin asignación no nos sirve de nada, pero requiere tiempo de CPU (suponiendo que el compilador no lo optimice).
Espero que aclare las cosas para usted y le da un margen para hacer nuevas preguntas. ¡Aclamaciones!
+1 para probar algo usted mismo primero antes de preguntar aquí. – Falmarri
El efecto secundario de 'j ++' es? El efecto secundario de 'j + 3' es? –