Requisito previo: ¿Cómo devolver múltiples valores de una función en C o C++?
A menudo hay casos de uso de declaraciones de retorno al tratar con llamadas a funciones. En general, solo se devuelve una cosa, ya sea un tipo de datos primitivo como un número entero, un carácter, etc., o un tipo de datos no primitivo como una array, string, vector, etc., según el tipo de retorno de la función.
Pero, ¿qué sucederá si tratamos de devolver más de un valor a través de declaraciones de devolución?
Este artículo se enfoca en discutir el escenario cuando se devuelven más de un valor a través de declaraciones de devolución.
Predecir la salida:
C++
// C++ program to implement // the above approach #include <iostream> using namespace std; // Function declaration and // definition int AddSub(int c, int d) { int x, y; x = c - d; y = c + d; // Returning two integers // instead of one return (x, y); } // Driver code int main() { // Initializing the variables int i = 100, j = 200, k; // Calling AddSub function k = AddSub(j, i); // Printing k cout << "The value of k = " << k; }
C
// C program to implement // the above approach #include <stdio.h> // Function declaration and // definition int AddSub(int c, int d) { int x, y; x = c - d; y = c + d; // Returning two integers // instead of one return (x, y); } // Driver code int main() { // Initializing the variables int i = 100, j = 200, k; // Calling AddSub function k = AddSub(j, i); // Printing k printf("The value of k = %d", k); }
Java
// Java program to implement // the above approach import java.util.*; class GFG{ // Function declaration and // definition static int[] AddSub(int c, int d) { int x, y; x = c - d; y = c + d; // Returning two integers // instead of one return new int[]{x, y}; } // Driver code public static void main(String[] args) { // Initializing the variables int i = 100, j = 200; int []k; // Calling AddSub function k = AddSub(j, i); // Printing k System.out.print("The value of k = " + (k[k.length-1])); } } // This code is contributed by 29AjayKumar
Python3
# Python program to implement # the above approach # Function declaration and # definition def AddSub(c, d): x, y = 0, 0; x = c - d; y = c + d; # Returning two integers # instead of one return [x, y]; # Driver code if __name__ == '__main__': # Initializing the variables i = 100; j = 200; k = 0; # Calling AddSub function k = AddSub(j, i); # Printing k print("The value of k = ", (k[len(k) - 1])); # This code is contributed by 29AjayKumar
C#
// C# program to implement // the above approach using System; public class GFG{ // Function declaration and // definition static int[] AddSub(int c, int d) { int x, y; x = c - d; y = c + d; // Returning two integers // instead of one return new int[]{x, y}; } // Driver code public static void Main(String[] args) { // Initializing the variables int i = 100, j = 200; int []k; // Calling AddSub function k = AddSub(j, i); // Printing k Console.Write("The value of k = " + (k[k.Length-1])); } } // This code is contributed by shikhasingrajput
Javascript
<script> // javascript program to implement // the above approach// Function declaration and // definition function AddSub(c , d) { var x, y; x = c - d; y = c + d; // Returning two integers // instead of one return [x, y]; } // Driver code // Initializing the variables var i = 100, j = 200; var k; // Calling AddSub function k = AddSub(j, i); // Printing k document.write("The value of k = " + (k[k.length-1])); // This code is contributed by shikhasingrajput </script>
Producción:
The value of k = 300
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
Explicación:
La mayoría de ustedes deben preguntarse si el resultado del código anterior será un «Error» porque en el código anterior, se devuelven más valores de los permitidos a la llamada de función.
En los casos como este, cuando se devuelven varios valores sin tomar precauciones especiales, como arrays, punteros, estructuras, referencias, tuplas, clases y objetos, en ese caso se devuelve el último valor y todos los valores anteriores simplemente se ignoran.
El número de valores devueltos puede ser muchos, pero solo se devolverá el último y también se pueden ignorar los corchetes o llaves «( )» y se puede escribir sin llaves simplemente separando los valores múltiples con una coma, como se muestra en el siguiente código. :
C++
// C++ program to implement // the above approach #include <iostream> using namespace std; // Function declaration and // definition int Operations(int c, int d) { int p, q, r, s, t; p = c - d; q = c + d; r = c * d; s = c / d; t = c % d; // Returning multiple integers // instead of one return p, q, r, s, t; } // Driver code int main() { // Initializing the variables int i = 100, j = 200, k; // Calling Operations function k = Operations(j, i); // Printing k printf("The value of k = %d", k); }
C
// C program to implement // the above approach #include <stdio.h> // Function declaration and // definition int Operations(int c, int d) { int p, q, r, s, t; p = c - d; q = c + d; r = c * d; s = c / d; t = c % d; // Returning multiple integers // instead of one return (p, q, r, s, t); } // Driver code int main() { // Initializing the variables int i = 100, j = 200, k; // Calling Operations function k = Operations(j, i); // Printing k printf("The value of k = %d", k); }
Java
// Java program to implement // the above approach import java.util.*; class GFG{ // Function declaration and // definition static int []Operations(int c, int d) { int p, q, r, s, t; p = c - d; q = c + d; r = c * d; s = c / d; t = c % d; // Returning multiple integers // instead of one return new int[]{ p, q, r, s, t }; } // Driver code public static void main(String[] args) { // Initializing the variables int i = 100, j = 200; int []k; // Calling Operations function k = Operations(j, i); // Printing k System.out.printf("The value of k = %d", k[k.length - 1]); } } // This code is contributed by shikhasingrajput
Python3
# Python program to implement # the above approach # Function declaration and # definition def Operations(c, d): p, q, r, s, t = 0,0,0,0,0; p = c - d; q = c + d; r = c * d; s = c / d; t = c % d; # Returning multiple integers # instead of one return [p, q, r, s, t ]; # Driver code if __name__ == '__main__': # Initializing the variables i = 100; j = 200; k = 0; # Calling Operations function k = Operations(j, i); # Printing k print("The value of k = ", k[len(k) - 1]); # This code is contributed by shikhasingrajput
C#
// C# program to implement // the above approach using System; public class GFG { // Function declaration and // definition static int []Operations(int c, int d) { int p, q, r, s, t; p = c - d; q = c + d; r = c * d; s = c / d; t = c % d; // Returning multiple integers // instead of one return new int[]{ p, q, r, s, t }; } // Driver code public static void Main(String[] args) { // Initializing the variables int i = 100, j = 200; int []k; // Calling Operations function k = Operations(j, i); // Printing k Console.Write("The value of k = {0}", k[k.Length - 1]); } } // This code is contributed by 29AjayKumar
Javascript
<script> // javascript program to implement // the above approach // Function declaration and // definition function Operations(c , d) { var p, q, r, s, t; p = c - d; q = c + d; r = c * d; s = c / d; t = c % d; // Returning multiple integers // instead of one return [ p, q, r, s, t ]; } // Driver code // Initializing the variables var i = 100, j = 200; var k; // Calling Operations function k = Operations(j, i); // Printing k document.write("The value of k = ", k[k.length - 1]); // This code is contributed by shikhasingrajput </script>
Producción:
The value of k = 0
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
Explicación:
aquí la salida es 0 porque la última variable t es igual a c % d = 0. Entonces, cuando se devuelven varios valores, el valor de t se asigna a la variable k.