Привет всем! Возник такой вопрос на счёт
c = min((1,2,3)). Правильно ли я понимаю что переменная c принимает значение 3, потому что выполняется операция следования, но если бы было записано так: c=min(1,2,3) то переменная c приняла бы значение 1.?
Спасибо за ответ)
Illia Nezhyhai,
a = (1, 2, 3);
b = min(1, 2, 3);
c = min((1, 2, 3));
Вот к первому заданию был ответ 3, потому что операция "запятая" присваивает значение переменной a последнего числа, остальные игнорирует.
А вот последнее задание не могу объяснить что будет выведено и почему.
Вадим, я не сишник, но попытаюсь обьяснить: что значит "выполнила два"? В функцию передаются все аргументы и после этого она делает свою работу. и.е. min(1, 2, 3) - вызов функции с тремя аргументами, и это не min(1); min(2); min(3);
А вот в случае с min((1, 2, 3)) - это min(3), потому что сначала рассчитывается значение скобок внутри - "(1, 2, 3)" - результат чего равен 3. Собственно подставляем вместо "(1, 2, 3)" результат и выходит просто "3", а следовательно и min(3).
Скобка впритык около вызова функции - начало списка аргуметов, ну и парная ей - конец этого списка. А вот внути уже может быть что хотите, любое выражение, и "(1, 2, 3)" - именно выражение.
Для того что бы ответить на ваш вопрос нужно знать как объявлена функция (возможно это макрос) min.
Предположу, что она объявлена как-то так: int min(int, int);
Тип данных в вашем вопросе роли не играет, поэтому предположим, что это int.
В этом случае:
a = (1, 2, 3); // a = 3, т.к. оператор "запятая" возвращает значение последнего выражения.
b = min(1, 2, 3); // ошибка компиляции, т.к. функция min принимает 2 параметра, а тут передается 3
c = min((1, 2, 3)); // // ошибка компиляции, т.к. функция min принимает 2 параметра, а тут передается 1, т.к. оператор "запятая" возвращает только одно последнее значение.
Alex Wells, как я правильно понял при c =min((1,2,3)) будет ошибка, потому что min станет 3, следовательно min'y не нужно искать меньшее значение оно и так будет известно. А в первом варианте у min будет три аргумента, среди которых он найдет меньшее значение и запишет его в переменную с.