¿Qué sucederá si se intenta que una función devuelva más de un valor a la vez?

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.

Publicación traducida automáticamente

Artículo escrito por anuragayu 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 *