una tipos punteros llamar funciĆ³n funciones funcion estructura ejemplos dev definir como c++ return post-increment

c++ - tipos - Es el comportamiento de retorno x++; definido?



punteros c++ (6)

Si tengo, por ejemplo, una clase con método de instancia y variables.

class Foo { ... int x; int bar() { return x++; } };

¿Está definido el comportamiento de devolver una variable post-incrementada?


Creo que está definido pero no preferido. Causa confusión a las personas. Por ejemplo, el siguiente código imprime 1 en lugar de 2.

#include <iostream> #include <cstdlib> using namespace std; int foo() { int i = 1; return i++; } int main() { cout << foo() << endl; return 0; }


La mayoría de los lenguajes de programación, como C ++, son recursivos en el orden en que se realizan las operaciones (no estoy haciendo ninguna implicación sobre cómo el compilador implementa el código aquí). Las operaciones compuestas que se componen de cualquier operación bien definida están bien definidas, ya que cada operación se lleva a cabo por última vez, primero en salir.

El incremento posterior devuelve el valor de la variable que se incrementa antes de incrementarla, por lo que la operación de return recibe ese valor. No hay que hacer una definición especial de este comportamiento.


Sí, es ... devolverá el valor de x antes de incrementarlo y después de eso, el valor de x será + 1 ... si es importante.


Sí, es equivalente a:

int bar() { int temp = x; ++x; return temp; }


Se define

Devuelve el valor de x antes del incremento. Si x es una variable local (no estática), este incremento posterior no tiene efecto ya que las variables locales de una función dejan de existir una vez que la función regresa. Pero si x es una variable estática local, una variable global o una variable de instancia (como en su caso), su valor se incrementará después de la devolución.


Sí.

En el postincrement (x ++), el valor de x se evalúa (se devuelve en su caso) antes de agregar 1.

En preincrement (++ x) el valor de x se evalúa después de agregar 1.

Editar : Puedes comparar la definición de pre y post incremento en los enlaces.