Incrementar el comportamiento del operador cuando se pasa como parámetros de función en C++

En C++, se usa un operador de incremento para incrementar el valor de la variable en 1. El símbolo ++ se usa para representar el operador de incremento. Hay dos tipos de operadores de incremento:

  • Operador de incremento previo: esta forma de operador de incremento aumenta el valor de la variable en 1 antes de asignarlo a la variable.
  • Operador posterior al incremento: esta forma de operador de incremento aumenta el valor de la variable en 1 después de asignar la variable.

Ejemplo :

C++

// C++ program to show the
// pre-increment operator as arguments to function
#include <iostream>
using namespace std;
 
void fun(int x, int y, int z)
{
    // values in x, y, z will
    // be printed.
    cout << x << " " << y <<
          " " << z;
}
 
// Driver code
int main()
{
    // declaring and defining
    // variable
    // i with value 2.
    int i = 2;
   
    // Calling function fun
    // with 3 parameters,
    // demonstrating
    // pre-increment.
   
    // function called
    fun(++i, ++i, ++i);
    return 0;
}
Producción

5 5 5

Complejidad temporal: O(1)
Espacio auxiliar: O(1)

Uno debe preguntarse si la salida puede ser 3, 4, 5 o 5, 4, 3 o cualquier combinación. Pero la salida es 5 5 5. Pero es la naturaleza o el comportamiento del operador de incremento. La ubicación de origen o la memoria donde se almacena el valor de la variable i es constante y cada operador de incremento aumenta el valor allí solamente . Será más claro después de un ejemplo más. Echemos un vistazo a un programa más. 

A continuación se muestra el programa C++ para implementar los operadores de incremento previo y posterior.

C++

// C++ program to implement the pre
// and post-increment operators as arguments to the function
#include <iostream>
using namespace std;
 
// Function with three
// parameters x, y and z
void fun(int x, int y, int z)
{
    // Print the value of the
    // parameters
    cout << x << " " << y << " " << z;
}
 
// Driver code
int main()
{
    // declaring and defining
    // variable i with value 5.
    int i = 5;
 
    // Function fun is called
    // with both pre-increment
    // and post-increment
    // operators
    fun(i++, i++, ++i);
    return 0;
}
Producción

7 6 8

Complejidad temporal: O(1)
Espacio auxiliar: O(1)

Aquí la salida también es diferente. Extraño, ¿no? C++ Standard no informa sobre el orden de evaluación de los parámetros. Por lo tanto, se puede evaluar en función del comportamiento del compilador.

Debe estar preguntándose si la salida debería ser 6 7 8 según el concepto explicado en el ejemplo anterior. 

Si uno se pregunta de acuerdo con el concepto de incremento posterior, el valor se usa primero y luego se incrementa. Entonces, el valor en el primer argumento debería ser 5. Pero la respuesta es no. Recuerde el principio de la memoria y la ubicación de la fuente, y luego aplique los conceptos de post y pre-incremento. Intente aplicar ambos conceptos en casos de prueba como fun(++i, i++, ++i) e intente predecir la salida para varios casos de prueba, y entonces seguramente tendrá sentido para usted, pero el orden puede variar según C++. estándar.

Publicación traducida automáticamente

Artículo escrito por sounaksaha999 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *