Почему вы должны включать более одного значения в оператор возврата? - PullRequest
0 голосов
/ 04 мая 2020

Я видел случаи, когда кто-то использовал бы операторы return с несколькими значениями. Например: return 8, 10, 6; Насколько я знаю, на самом деле будет возвращено только одно из этих значений. Какая польза от использования return таким образом?

В частности, этот вопрос появляется у меня на домашней работе.

Утверждение: return 2 * 3 + 1, 1 + 5; возвращает значение ____.

Я знаю, что всегда будет возвращаться 6, так почему бы мне написать это так?

Простите, если это простой вопрос. Я все еще немного новичок в программировании.

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Оператор return 2 * 3 + 1, 1 + 5; возвращает значение 6 .

Это хитрость оператора запятой в C ++. Подробнее об этом можно прочитать здесь: https://en.cppreference.com/w/cpp/language/operator_other

Оператор запятой в основном представляет собой список выражений, разделенных запятыми, они будут оцениваться слева направо , а результат последнего элемента будет рассматриваться как результат целого оператора запятой .

Вот простой пример, демонстрирующий, как оператор запятой работает.

int foo() {
    int i = 1;
    return i += 2, i++, i + 5; // This is a comma operator with three items
                               // i += 2 will be evaluated first, then i == 3
                               // i++ will be evaluated second, then i == 4
                               // i + 5 will be evaluate last, and the result is 9
                               // the result of the last item is returned by the return statement
}

int main() {
    std::cout << foo();
    return 0;
}

Этот код печатает 9.

0 голосов
/ 04 мая 2020

Когда вы делаете это, вы избегаете использовать математику в функциональном блоке, и это делает вашу функцию похожей на работу 3 раза, и результатом будет тот, который вы хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...