我想执行一个多条件if语句,如下所示。
Head* head;
If ((head->next!=NULL)&&(head->next->next!=NULL))执行的顺序对于上面的语句在没有seg错误的情况下工作很重要。
有没有办法确定编译器在编译时执行它的方式。
发布于 2015-01-16 22:45:25
标准。
您可以保证第一个表达式将首先求值。
此外,您可以保证,如果第一个求值结果为false,则第二个求值将不会被求值(查看短路)。如果没有发生这种情况,编译器就不符合。
发布于 2015-01-16 22:47:41
顺序总是从左到右。因此
(cond1) && (cond2)总是首先测试cond1,如果是这样的话,还会测试cond2。
发布于 2015-01-16 23:00:06
&&和||运算符强制从左到右进行评估,并引入序列点,因此可以保证在评估RHS之前,将对其进行全面评估,并应用所有副作用。
https://stackoverflow.com/questions/27986442
复制相似问题