我认为这太基础了,但这两种方法都有用吗?
return true; // 1
和
return (true); // 2
类似:sizeof
,exit
我猜:
如果return是函数,
1
就是 错误的。因此,返回应该是
unary operator
,也可以接受 括号...非常类似于unary minus
:-5
和-(5)
,两者都是 好的。
它是什么 - 一元运算符?
答案 0 :(得分:29)
return
是一个 关键字 ,操纵控制流。因为它类似于if
,for
等。它可以使用或不使用表达式(return;
从void
函数返回)。当然,与所有表达式一样,允许使用额外的括号。 (因此return (42);
与int i = (4*10+2);
类似,在这两种情况下,括号都是多余的,但允许使用。)
sizeof
是 关键字 ,是运算符,类似于new
,delete
,+
,->
,::
等。
std::exit()
是一个 标识符 ,表示C标准库的函数(它永远不会返回给调用者)。
答案 1 :(得分:27)
return
只是一种语言/控制流构造。它当然不是一个函数,因为它在语法上是不可简化的,它也不是真正的运算符,因为它没有返回值。
答案 2 :(得分:17)
return
不是运算符,也不是函数。 return
是一个关键字,形成 返回语句 ,属于跳转语句的类别。在这方面,它与sizeof
或exit
完全没有相似之处。
要求()
围绕return
的论点存在于古代预标准版本的C(例如CRM C)中,但很快被淘汰,即使是古怪的习惯包裹即使在今天,也可以不时地看到return
中多余()
的论点。
答案 3 :(得分:7)
return是一个控制流关键字,就像goto
,break
,continue
,if
,else
...不要认为它是运算符,因为它不会改变它背后的值。 ()
只是用于计算表达式,并且计算表达式的结果将传递给调用函数(如何依赖于编译器实现)。
这当然也没有功能,只要想一想:你会如何从回归中回归?
答案 4 :(得分:4)
“return”既不是常规也不是操作员。
它转换为众所周知的汇编指令。例如,在x86架构上,它转换为“ret”,而在PowerPC架构上,它转换为“blr”。
对于它返回的值,编译器在发出返回指令之前将该值移动到适当的寄存器中。在x86架构上,如果需要,这通常是EAX和EDX - 对于x86-64,寄存器会略有变化。在PPC上,如果记忆服务,那就是r1 - 如果我在这个细节上错了,其他人可能会纠正我。
希望这有帮助。
答案 5 :(得分:2)
'true' is an Expression,
'(true)' is an Expression.
return后面总是可以跟一个表达式,但是对于返回类型检查,表达式必须具有相同类型的函数返回类型。
hense你可以通过说
来概括它return Expression.
(在具有void
返回类型的函数中,return
可能后面没有表达式;裸return
只会退出该函数。)
答案 6 :(得分:0)
“在古代预先标准版本的C(例如CRM C)中存在围绕返回参数放置()的要求,但很快被消除了,尽管将多余的论证包含在多余的古怪习惯中()今天甚至可以看到。“
是的,你知道你正在看一些旧的代码,或者有人认为当你看到它们一直使用parens时,return就是一个函数。 我的大学导师做到了这一点,它一直让我烦恼。 哦,至少他是一贯的。