首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法确定编译器在编译时执行多条件if语句的方式?

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

Stack Overflow用户
提问于 2015-01-16 22:44:08
回答 3查看 77关注 0票数 0

我想执行一个多条件if语句,如下所示。

代码语言:javascript
复制
Head* head;
If ((head->next!=NULL)&&(head->next->next!=NULL))

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

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

EN

回答 3

Stack Overflow用户

发布于 2015-01-16 22:45:25

标准。

您可以保证第一个表达式将首先求值。

此外,您可以保证,如果第一个求值结果为false,则第二个求值将不会被求值(查看短路)。如果没有发生这种情况,编译器就不符合。

票数 9
EN

Stack Overflow用户

发布于 2015-01-16 22:47:41

顺序总是从左到右。因此

代码语言:javascript
复制
(cond1) && (cond2)

总是首先测试cond1,如果是这样的话,还会测试cond2。

票数 1
EN

Stack Overflow用户

发布于 2015-01-16 23:00:06

&&和||运算符强制从左到右进行评估,并引入序列点,因此可以保证在评估RHS之前,将对其进行全面评估,并应用所有副作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27986442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档