Что произойдет, если функция попытается вернуть более одного значения за раз?
Предварительное условие: как вернуть несколько значений из функции на C или C++?
Часто бывают случаи использования операторов return при работе с вызовами функций. Как правило, возвращается только одна вещь, будь то примитивный тип данных, такой как целое число, символ и т. д., или непримитивный тип данных, такой как массив, строка, вектор и т. д., в зависимости от типа возвращаемого значения функции.
Но что произойдет, если мы попытаемся вернуть более одного значения с помощью операторов return?
В этой статье основное внимание уделяется обсуждению сценария, когда через операторы return возвращается более одного значения.
Предсказать результат:
C++
// C++ program to implement// the above approach#include <iostream>using namespace std;// Function declaration and// definitionint AddSub(int c, int d){ int x, y; x = c - d; y = c + d; // Returning two integers // instead of one return (x, y);}// Driver codeint 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// definitionint AddSub(int c, int d){ int x, y; x = c - d; y = c + d; // Returning two integers // instead of one return (x, y);}// Driver codeint 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 approachimport java.util.*;class GFG{// Function declaration and// definitionstatic 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 codepublic 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# definitiondef AddSub(c, d): x, y = 0, 0; x = c - d; y = c + d; # Returning two integers # instead of one return [x, y];# Driver codeif __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 approachusing System;public class GFG{// Function declaration and// definitionstatic 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 codepublic 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// definitionfunction 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 variablesvar i = 100, j = 200;var k;// Calling AddSub functionk = AddSub(j, i);// Printing kdocument.write("The value of k = " + (k[k.length-1]));// This code is contributed by shikhasingrajput</script> |
Выход:
The value of k = 300
Временная сложность: O(1)
Вспомогательное пространство: O(1)
Объяснение:
Большинству из вас должно быть интересно, что вывод приведенного выше кода будет «Ошибкой», потому что в приведенном выше коде вызову функции возвращается больше разрешенных значений.
В таких случаях, когда несколько значений возвращаются без особых мер предосторожности, таких как массив, указатели, структуры, ссылки, кортежи, классы и объекты, тогда в этом случае возвращается последнее значение , а все значения до этого просто игнорируются.
Количество возвращаемых значений может быть много, но будет возвращено только последнее вхождение, а также можно игнорировать скобки или фигурные скобки «()» и можно писать без фигурных скобок, просто разделяя несколько значений запятой, как показано в приведенном ниже коде. :
Выход:
The value of k = 0
Временная сложность: O(1)
Вспомогательное пространство: O(1)
Объяснение:
Здесь выход равен 0, потому что последняя переменная t равна c % d = 0. Поэтому, когда возвращаются несколько значений, значение t присваивается переменной k.