C ++运算符优先级和return语句

时间:2013-09-11 22:19:05

标签: c++ return return-value operator-precedence

如果我执行return a ? b : c;return a && a2 && a3;

之类的操作

是否可以将其评估为return a,然后在评估其余部分之前,函数会立即返回?

3 个答案:

答案 0 :(得分:3)

return语句,而不是表达式。所以它永远不会像你想象的那样被误解。

语句的格式始终为return [some expression];(表达式是可选的)。首先计算表达式(如果存在),并将其值绑定到函数的返回值。

答案 1 :(得分:2)

为了使这个更清楚,我将稍微重申一下这个问题:

return a ? b() : c();

return a && a2() && a3();

在第一种情况下,bc中的一个将被调用,而不是另一个。

在第二种情况下,如果a为false,则不会调用a2a3。如果a2返回false,则不会调用a3

答案 2 :(得分:1)

return a && a2 && a3;中,如果a为false,则无需评估表达式的其余部分。结果总是错误的。因此,不会评估a2a3。这被称为“短路”。