C++ C++;运算符优先级和返回语句
如果我执行类似于C++ C++;运算符优先级和返回语句,c++,return,return-value,operator-precedence,C++,Return,Return Value,Operator Precedence,如果我执行类似于的操作,返回a?b:c或返回a&&a2&&a3 是否可以将其求值为只返回a,然后函数在求值其余函数之前立即返回?在返回a&&a2&&a3,如果a为false,则无需计算表达式的其余部分。结果总是错误的。因此,a2和a3将不会被评估。这称为“短路”。返回是一条语句,而不是表达式。所以它永远不会被你的思维方式误解 语句的形式总是return[some expression](表达式是可选的)。表达式(如果存在)将首先求值,其值将绑定到函数的返回值。为了更清楚地说明这一点,我将稍微重申
的操作,返回a?b:c代码>或返回a&&a2&&a3代码>
是否可以将其求值为只返回a
,然后函数在求值其余函数之前立即返回?在返回a&&a2&&a3
,如果a
为false,则无需计算表达式的其余部分。结果总是错误的。因此,a2
和a3
将不会被评估。这称为“短路”。返回是一条语句,而不是表达式。所以它永远不会被你的思维方式误解
语句的形式总是return[some expression]代码>(表达式是可选的)。表达式(如果存在)将首先求值,其值将绑定到函数的返回值。为了更清楚地说明这一点,我将稍微重申一下这个问题:
return a ? b() : c();
return a && a2() && a3();
在第一种情况下,将调用b
或c
中的一个,但不调用另一个
在第二种情况下,如果a
为false,则不会调用a2
或a3
。如果a2
返回false,则不会调用a3
。您知道这两条语句根本不相等吗?&&
运算符短路,因此它肯定可以在不计算a2
和a3
的情况下返回。但不知道条件。@markransem条件始终计算条件,并且只计算第二个和第三个表达式中的一个。