Скобки вокруг возвращаемых значений - почему?
Довольно часто я вижу такой код (C, С++ и иногда Java):
return (value);
Я не вижу никакой пользы от этих круглых скобок. Поэтому мой вопрос заключается в том, что программисты предположили, что return
является какой-то функцией с возвращаемым значением в качестве аргумента или действительно ли существуют случаи, когда эти круглые скобки имеют смысл?
Я понимаю, что аналогичный вопрос уже задан здесь, но это связано только с ANSI C. Интересно, существуют ли аспекты, специфичные для С++ или Java, на которые там не было ответа.
Ответы
Ответ 1
Относительно C
Скобки помещаются там, где есть выражение, и нужно, чтобы возвращаемое значение было таким значением выражения. Даже тогда скобки не нужны. Вполне нормально писать что-то вроде
return x + y;
Программисты делают это return (x + y);
, чтобы сделать его более читаемым.
Итак, размещение круглых скобок - это вопрос мнения и практики.
Что касается С++
Существует тайный случай, когда речь идет о круглых скобках. Цитирование этого вопроса
int var1 = 42;
decltype(auto) func1() { return var1; } // return type is int, same as decltype(var1)
decltype(auto) func1() { return(var1); } // return type is int&, same as decltype((var1))
Вы можете видеть, что возвращаемые значения разные, и это связано с круглыми скобками. Вы можете пройти через этот ответ, чтобы понять его подробно.
В отношении java круглые скобки не имеют никакого значения.
Соглашение о кодировании предлагает пойти с
return x + y;
чтобы узнать больше, прочитайте этот ответ.
ПРИМЕЧАНИЕ: Я мало знаю о Java и С++. Все содержание в моем ответе о java и С++ взято из других ответов. Я сделал это, чтобы объединить различные соглашения для трех языков.
Ответ 2
Технически нет никаких оснований заключать в скобки выражение, данное return
. Это действительно вопрос вкуса.
Тем не менее, я обычно заключу в скобки выражение return
, если оно использует логические операторы. Поскольку такие операторы обычно рассматриваются как часть while
или if
, это делает более понятным, что вы хотите что-то сделать с этим значением, помимо того, что, по-моему, прыгаете.
int out_of_range(int x)
{
return ((x < 1) || (x > 10));
}
Ответ 3
В основном наследие. Язык программирования K & R C (1978) показывает результаты с использованием скобок. Возможно, некоторые старые компиляторы C потребовали этого, но я не уверен.
Ответ 4
Прежде всего, это не обязательно, и вы увидите его важность в возвращении выражений & не ценности. Но если вы не используете скобки, ваш код может быть не так легко читаемым (особенно в случае сложных выражений) и может привести к путанице. Также можно отметить, что ЭТО НЕ ФУНКЦИЯ (поскольку скобки не являются обязательными). Вы можете отметить случай return 0;
в конце тела main().
Здесь заметно, что скобки с 0 не используются, что доказывает, что это не функция.
Таким образом, скобки используются для того, чтобы сделать код более читаемым и понятным для компилятора.