Результат функции

Последнее обновление: 05.01.2023

Функция может иметь результат - некоторое значение, которое оно возвращает во внешний код. Для возвращения результата функция применяет оператор return, которые имеет следующие способы использования:

return;
return выражение;

Первая форма может использоваться в тех функциях, которые не возвращают никакого значения, то есть имеют в качестве возвращаемого типа void.

Вторая форма применяется, если функция имеет в качестве возвращаемого типа любой тип, кроме void. Выражение после оператора return представляет возвращаемое значение.

В прошлой теме была определена функция sum, которая в качестве возвращаемого типа имела тип void, то есть по факту ничего не возвращает:

void sum(int x, int y)
{
	printf("%d + %d = %d \n", x, y,  x + y);
}

Хотя эта функция не использует явно оператор return, но компилятор сам его добавляет автоматически в конец функции:

void sum(int x, int y)
{
	printf("%d + %d = %d \n", x, y,  x + y);
	return;
}

Эти оба определения фактически равнозначны.

Но также функция может возвращать какое-то конкретное значение. Например, изменим функцию sum, чтобы она возвращала сумму чисел:

#include <stdio.h>

int sum(int x, int y)
{
	return x + y;
}

int main(void)
{
	int x = 25;
	int y = 15;
	int result = sum(x, y);
	printf("%d + %d = %d \n", x, y, result);
}

Теперь функция sum в качестве возвращаемого типа имеет тип int. Если тип функции отличен от void, то функция обязательно должна возвращать значение данного типа. Для возвращения значения применяется оператор return, после которого указывается возвращаемое значение.

В данном случае функция sum возвращает сумму параметров:

return x + y;

Если функция возвращает какое-либо значение, то при ее вызове мы можем получить это значение в переменную:

int result = sum(x, y);

Прототип функции sum будет выглядеть так:

int sum(int, int);

Логика возвращения результата может быть более сложной. Например:

#include <stdio.h>

int calculate(int x, int y, char operation)
{
	if(operation=='+')
	{
		return x + y;
	}
	else if(operation=='-')
	{
		return x - y;
	}
	else
	{
		return 0;
	}
}

int main(void)
{
	int x = 30;
	int y = 10;
	int result1 = calculate(x, y, '+');
	int result2 = calculate(x, y, '-');
	int result3 = calculate(x, y, 'g');

	printf("%d + %d = %d \n", x, y, result1);
	printf("%d - %d = %d \n", x, y, result2);
	printf("%d \n", result3);
}

В данном случае функция calculate() принимает три параметра. Первые два параметра представляют числа, над которыми выполняется арифметическая операция. А третий параметр представляет знак операции. И в зависимости от знака операции функция возвращает либо сумму, либо разность чисел. Или число 0, если операция не поддерживается.

Дополнительные материалы
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850