有没有办法确定编译器在编译时执行多条件if语句的方式

时间:2015-01-16 14:44:08

标签: c++ c

我想在下面的语句中执行多条件。

Head* head;
If ((head->next!=NULL)&&(head->next->next!=NULL))

执行顺序对于上述语句在没有seg错误的情况下工作非常重要。

有没有办法在编译时以编译器执行它的方式来确定。

3 个答案:

答案 0 :(得分:9)

标准。

您可以保证首先评估第一个表达式。

此外,您可以保证,如果第一个评估为false,则不会评估第二个(查找短路)。如果没有发生这种情况,编译器就不合规了。

答案 1 :(得分:1)

订单总是从左到右。因此

(cond1) && (cond2)

将始终首先测试cond1,如果这是真的,那么cond2。

答案 2 :(得分:1)

&&||操作员强制从左到右评估并引入序列点,因此可以保证在评估RHS之前对LHS进行全面评估并应用所有副作用