возврат (а) против возврата - PullRequest
10 голосов
/ 30 октября 2011

Я видел и код C, и код C ++, на который смотрел.

В чем разница?

Ответы [ 3 ]

38 голосов
/ 30 октября 2011

Никакой разницы.

Официальный синтаксис: return something; или return; и, конечно, это ключевое слово, а не функция.

По этой причине вы должны читать не как return( a );, а как return (a); Я думаю, что разница невелика, но очевидна, скобки будут применяться не к возврату, а к.

((((a)))) совпадает с (a), что совпадает с a.

Вы также можете написать что-то вроде ...

int x = (((100)));

Вы также можете написать что-то вроде ...

printf("%d\n", (z));

Как кто-то сказал в комментариях, теперь с C ++ 11 (версия языка C ++ 2011) новый оператор decltype. Этот оператор представляет новый пример, где (a) отличается от a, это довольно эзотерично и немного не в тему, но я добавляю этот пример только для полноты картины.

    int x = 10;
    decltype(x) y = x;   // this means int y = x;
    decltype((x)) z = x; // this means int& z = x;
    y = 20;
    z = 30;
    std::cout << x << " " << y << " " << z << std::endl;
    // this will print out "30 20 30"

Студенты не будут заинтересованы в этом, как я уже сказал, слишком эзотерически, и он будет работать только с компиляторами, которые поддерживают хотя бы часть стандарта C ++ 11 (например, GCC 4.5+ и Visual Studio 2010).

Это контрастирует также с использованием ключевого слова typeid:

int a;
std::cout << typeid(a).name() << std::endl; // will print "int"
std::cout << typeid((a)).name() << std::endl; // will print "int" !!!!
11 голосов
/ 02 ноября 2011

Запись return x указывает на программиста, который понимает, что означает return.Принимая во внимание, что return(x) указывает на программиста, который ошибочно полагает, что return является своего рода функцией.

3 голосов
/ 30 октября 2011

return - это не функция.

Это скорее точка стиля.Лично я не использую скобки в операторе возврата, если он не показывает порядок операций.

примеры

return a;
return (a || b);
return (a && (b || c));
return (a ? b : c);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...