首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌套if (条件)与逻辑运算符的区别

嵌套if (条件)与逻辑运算符的区别
EN

Stack Overflow用户
提问于 2019-04-05 06:09:41
回答 1查看 85关注 0票数 0

嵌套的if (条件)和逻辑运算符在性能和逻辑方面有什么不同。

代码语言:javascript
运行
复制
if(a && b && c){
 //do something 
 }

if(a){
   if(b){
         if(c){
       //do something
     }
   }
 }

上述代码在逻辑上是相同的吗?我主要关心的是代码的性能,性能明智地使用哪一个是最好的?

EN

回答 1

Stack Overflow用户

发布于 2019-04-06 19:33:23

如果您尝试将这两个代码转换为assembly语言(非常接近于机器语言),这两个代码将转换为完全相同的(first codesecond code):

C

代码语言:javascript
运行
复制
void Main(){
    int a=1, b=2, c= 3, res = 0;

    if(a && b && c)
        res = 100;
}

// or
void Main(){
    int a=1, b=2, c= 3, res = 0;

    if(a)
        if(b)
            if(c)
                res = 100;
}

程序集输出

代码语言:javascript
运行
复制
Main():
        push    rbp
        mov     rbp, rsp
        mov     DWORD PTR [rbp-4], 1
        mov     DWORD PTR [rbp-8], 2
        mov     DWORD PTR [rbp-12], 3
        mov     DWORD PTR [rbp-16], 0
        cmp     DWORD PTR [rbp-4], 0
        je      .L3                     ; jump to the end if `a` is not true
        cmp     DWORD PTR [rbp-8], 0
        je      .L3                     ; jump to the end if `b` is not true
        cmp     DWORD PTR [rbp-12], 0
        je      .L3                     ; jump to the end if `c` is not true
        mov     DWORD PTR [rbp-16], 100 ; otherwise do something
.L3:
        nop
        pop     rbp
        ret
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55525632

复制
相关文章

相似问题

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