繁体   English   中英

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

[英]C++ Operator precedence and the return statement

如果我做某事像return a ? b : c; return a ? b : c; 或者return a && a2 && a3;

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

return是一个声明 ,而不是表达式 因此,它永远不会像你想象的那样被误解。

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

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

return a ? b() : c();

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM