OccamaRazor
@OccamaRazor

Как правильно передать несколько значений в функцию?

Язык Си.
Сейчас показывает лишь последнюю только переменную max , то есть выводит 100 игнорируя остальные данные и массив. Подскажите, как можно реализовать?
#include <stdio.h>

int binarySearch(int key, int array[],int max, int min);

int main(void)
{
	int array[10] = {1,2,3,4,5,6,7,8,9};
	int result = binarySearch(23, array, 0, 100);
	printf("RESULT: %d \n", result);
	system("pause");
}

int binarySearch(int key, int array[], int max, int min)
{
	return (key, array, max, min);
}
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 3
Объявите структуру и возвращайте её
Ответ написан
Комментировать
15432
@15432
Системный программист ^_^
Вот эта конструкция исполняет все действия, указанные через запятую и возвращает результат последнего.
return (key, array, max, min);
Так что оно вернет значение min (который равен 100, потому что вы подаёте 100 в аргумент min, что тоже странно). Не очень понятно, что вы хотели здесь сделать. Чтобы компилятор сам понял, что нужно поискать значение в массиве? Это так не работает, нужно писать поиск самостоятельно.
Ответ написан
Комментировать
@abcd0x00
Операция "запятая" - бинарная операция, которая выполняется слева направо. Сначала вычисляется левый операнд, затем вычисляется правый операнд. После этого вычисленное значение правого операнда становится результатом операции.

Это три операции "запятая".
(key, array, max, min)

Выполняется это вот так
((key , array) , max) , min)

Чтобы не путать операцию "запятая" со списками инициализации, перед запятой в операции "запятая" принято ставить пробел.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы