Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;运算符优先级和返回语句_C++_Return_Return Value_Operator Precedence - Fatal编程技术网

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条件始终计算条件,并且只计算第二个和第三个表达式中的一个。