Подтвердить что ты не робот

Возвращает оператор или функцию?

Это слишком основательно, я думаю, но как они работают?

return true;   // 1

и

return (true); // 2

Аналогично: sizeof, exit

Мое предположение:

Если return был функцией, 1 будет ошибочными.

Итак, return должен быть unary operator, который также может принимать скобки... в значительной степени похожи на unary minus: -5 и -(5), оба все в порядке.

Это то, что это - унарный оператор?

4b9b3361

Ответ 1

return - ключевое слово , которое управляет потоком управления. В этом он похож на if, for и т.д. Его можно использовать с выражением или без него (return; возвращает из функции void). Конечно, как и для всех выражений, допускаются дополнительные круглые скобки. (So ​​return (42); аналогично int i = (4*10+2);, в обоих случаях скобки являются избыточными, но разрешены.)

sizeof - ключевое слово , которое является оператором, аналогичным new, delete, +, ->, :: и т.д.

std::exit() является идентификатором, который обозначает функцию стандартной библиотеки C (которая никогда не возвращается к вызывающей стороне).

Ответ 2

return - это просто построение языка/управления потоком. Это, конечно, не функция, так как она синтаксически неприводима, и это тоже не является оператором, поскольку она не имеет возвращаемого значения.

Ответ 3

return не является оператором и не является функцией. return - это ключевое слово, которое формирует оператор return, который относится к категории операторов перехода. В этом отношении он не имеет абсолютно никакого сходства ни с sizeof, ни с exit.

Требование поставить () вокруг аргумента return существовало в древних предварительных версиях C (например, CRM C), но было быстро устранено, хотя причудливая привычка обернуть аргумент return в избыточном () время от времени можно увидеть и сегодня.

Ответ 4

return - ключевое слово потока управления, точно так же, как goto, break, continue, if, else... Не думайте об этом как о операторе, потому что он не изменяет значение за этим. () - это просто оценить выражения, и результат оцениваемого выражения будет передан вместе с вызывающей функцией (как зависит реализация компилятора om).

Это также, безусловно, не функция, просто подумайте об этом: как бы вы вернулись из возвращения?

Ответ 5

"return" не является ни подпрограммой, ни оператором.

Это переводится в хорошо известную инструкцию ассемблера. Например, в архитектуре x86 она переводится как "ret", а на архитектуре PowerPC она преобразуется в "blr".

Для возвращаемого значения компилятор перемещает это значение в соответствующий регистр (регистры) до выдачи команды возврата. В архитектуре x86 это, как правило, EAX и EDX, если необходимо - регистры немного изменятся для x86-64. На PPC, если память служит, это r1 - другие могут исправить меня, если я ошибаюсь в этой детали.

Надеюсь, что это поможет.

Ответ 6

'true' is an Expression, 
'(true)' is an Expression. 

return всегда может следовать за выражением, но для проверки возврата к типу выражение должно иметь тот же тип возвращаемого типа функции.

hense, вы можете обобщить его, сказав

return Expression. 

(В функции с возвращаемым типом void return может не следовать выражение: голый return просто выходит из функции.)

Ответ 7

"Требование поместить() вокруг аргумента возврата существовало в древних предстандартных версиях C (например, CRM C), но было быстро устранено, хотя причудливая привычка обернуть аргумент возврата в избыточном() можно видеть время от времени и сегодня.

Да, вы знаете, что вы смотрите на какой-то старый код, или кто-то думает, что возврат - это функция, когда вы видите, что они все время используют parens. Мой преподаватель колледжа сделал это, и это раздражало меня все время. Ну, по крайней мере, он был последовательным.