说好一起扑成狗
2018-05-14 10:24
采纳率: 100%
浏览 4.1k
已采纳

这两个if else是一样的吗?


if(表达式1)
{
    ....;
}
else
{
    if(表达式2)
    { 
      ....;
    }
    else
    {
      ....;
    }
}
----------
if(表达式1)
{
    ....;
}
else if(表达式2)
      {
         ....;
      }
      else
      {
        ....;
      }

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

54条回答 默认 最新

  • kiba911 2018-05-15 03:32
    已采纳

    只有这个我会:
    1、2个语句表达的意思和计算步骤都一样;
    2、2个语句的使用情况视具体情况和编码规范而定;
    3、举个栗子:
    3.1、一条三岔路,一般用第二个语句来表达,代码便于阅读。因为结果清晰明了,没必要把结构做复杂。
    3.2、一个迷宫,一般用第一个语句来表达,一环套一环,嵌套正合适,代码阅读有层次。
    4、自己尝试:一条路第一个路口三条岔路,每条岔路分别还有一个三岔路口。
    4.1、通过计算可知全部岔路走完,有九个方向,也就是有9个结果;
    4.2、如果用第二个语句来表达,不嵌套就需要重复三遍第二个语句;
    4.3、如果用第一个语句来表达,就只需要使用一层嵌套即可;
    4.4、结果都能实现,但是在代码阅读和理解上,肯定是使用嵌套的语句更好。
    5、该用砖砌的时候用砖砌,该用混凝土浇灌就用混凝土浇灌,编写代码不能只考虑达成目标,还需要考虑整体结构,好比造房子一样。
    6、其实我就是造房子的,O(∩_∩)O哈哈~

    点赞 评论
  • BraveNing 2018-05-14 10:29

    不一样,第一个只有满足if的条件和不满足if的条件,第二是满足if条件和或者满足else if 条件,和不满足两者条件的

    点赞 评论
  • 闭上左眼看世界 2018-05-14 10:33

    第二种,即使你把else缩进,这个else也是和if,else if 配对的.

    点赞 评论
  • EuclideanSpace 2018-05-14 10:34

    不一样,
    第一个是两层if嵌套,有两层if,只有把第一层的if判断了,才能判断第二层的if(也就是表达式2),这两层if都是有两个条件判断:if 和 else。
    第二个只有一个if语句,但是有多个条件判断(三个条件判断):if,else if,else。

    不清楚追问,忘采纳

    点赞 评论
  • xyt3198 2018-05-14 10:39

    从逻辑上来说,是一样的

    点赞 评论
  • ysq1026 2018-05-14 10:53

    看表达式,可以一样,可以不一样。

    点赞 评论
  • CharleeChan 2018-05-14 10:56

    不一样的,第一个是嵌套的,第二个是并列的。

    点赞 评论
  • jinyangf 2018-05-14 11:04

    主要看你的逻辑了,两者可以实现同样的效果,也可以实现不一样的效果

    点赞 评论
  • cyp1314v587 2018-05-14 11:08

    前一个属于包含,后一个只是格式没对齐,ctrl+a,ctrl+i就好

    点赞 评论
  • xudong_98 2018-05-14 11:20

    不一样,第一个是在else下嵌套完成的,第二个是同级别判断的

    点赞 评论
  • 王丫丫o 2018-05-14 11:22

    不太一样,第一个是if条件,其他的就是else;
    第二个是if条件1,else if条件2,其他的结果都为else.

    点赞 评论
  • Eric_Tseng 2018-05-14 11:36

    不一样!
    if(A>5)
    {
    printf("A为大于5的正数");
    }
    else //剩下的A是小于等于5
    {
    if(A {
    printf("A为负数");
    }
    else
    {
    printf("A大于等于0并且小于5"); //”剩下的A是小于等于5“”里又不小于0的数
    }
    }
    ---------- //括号应该这样对齐
    if(A>5)
    {
    printf("A为大于5的正数");
    }
    else if(A<0)

    {
    printf("A为负数");
    }
    else
    {
    printf("A大于等于0并且小于5");
    }

    
    
    点赞 评论
  • qq_37506524 2018-05-14 11:43

    直接一个if,然后else if,最后else结尾不是很好吗。弄得那么复杂干嘛。

    点赞 评论
  • qq_41529156 2018-05-14 11:43

    不一样,第一个if else 是当表达式1不成立时,才会判断表达式2;第二个是无论表达式1成立还是不成立,都要执行else if来判断表达式2.

    点赞 评论
  • qq164836284 2018-05-14 11:46

    结果上来讲应该是一样的

    点赞 评论
  • tianshun_1987 2018-05-14 11:58

    实现的功能是一样的,逻辑也是一样的

    点赞 评论
  • CoCoSong丶 2018-05-14 12:27

    从逻辑角度出发,只要逻辑上一致,那就是一致的。写法可以多种多样

    点赞 评论
  • zhanghaoran1989 2018-05-14 12:39

    不一样,第一种和第二种执行的结果可能不一样

    点赞 评论
  • 麒麟降生的地方 2018-05-14 12:47

    不完全一样的,分别对应于不同的逻辑实现,从功能上是相同的

    点赞 评论
  • 张飞的猪 2018-05-14 13:21

    不一样,第一个只有满足if的条件和不满足if的条件,第二是满足if条件和或者满足else if 条件,和不满足两者条件的

    点赞 评论
  • qq_31136087 2018-05-14 13:25

    不同的,一个是if-else,另一个是if-elseif,两者的判断是不同的。if-else只在if后有判断语句,满足条件执行if后的语句,不满足执行else后的语句。
    而if-elseif对应的if和elseif两者后面都有判断语句,if后有判断语句,满足条件执行if后的语句,不满足执行elseif再进行一次判断,满足判断条件则执行elseif里的语句,不满足则跳出循环。

    点赞 评论
  • 荔枝hu 2018-05-14 13:39

    不一样~ 同时不满足表达式1和表达式2,那么会执行else中的else
    若换成下面这一种方式,则不会执行任何语句

    点赞 评论
  • cool whidpers 2018-05-14 13:45

    不太一样,第一个是if条件,其他的就是else;
    第二个是if条件1,else if条件2,其他的结果都为else.

    点赞 评论
  • WZX_1020 2018-05-14 13:46

    第一个是嵌套\第二个是并列

    点赞 评论
  • rover5269 2018-05-14 14:05

    逻辑完全一样,都是先判是否满足表达式1,再判是否满足表达式2,最后是都不满足的

    点赞 评论
  • 13etterrnan 2018-05-14 14:29

    这边的else都是找最近的if配对的,所以是一样的

    点赞 评论
  • mango_love 2018-05-14 15:11

    先说说时间空间复杂度把,都是O(1)
    再来说执行情况把,如果条件一满足,那么执行,如果不满足,都是要判断条件二得,如果条件二满足,那么执行,如果条件二也不满足,两个都是执行最后得else
    所以。。。花样再多计算机只认识0110 0110 0110
    这个答案是否满意

    点赞 评论
  • SunnyH0622 2018-05-14 16:03

    第一个是如果满足if的条件执行if语句,不满足则执行else语句,第二个是满足if条件或者满足else if 条件,和不满足两者条件的

    点赞 评论
  • Nick_Study_java 2018-05-15 00:44

    第一种表达是两层嵌套:在不满足第一层if条件下,执行else,在else条件下执行内层{if(...)else{}};
    第二种表达是并列的:在逻辑上其实与第一种表达效果是一样的。
    两种的最大区别就是可以少写个{},且结构看起来更清晰。
    程序员的语句结构要简洁,比如a=a+1 可以缩写成 a+=1

    点赞 评论
  • qq_33623961 2018-05-15 00:48

    写法不同,但功能一样

    点赞 评论
  • m0_38029849 2018-05-15 01:02

    不一样,第一种只有一个条件判断,第二种有多个条件判断

    点赞 评论
  • weixin_41091277 2018-05-15 01:18

    直接一个if,然后else if,最后else结尾 就好了啊

    点赞 评论
  • qq_41995426 2018-05-15 01:32

    不一样的。第一个是对立的,也就是非0即1.第二个是0,1还有其他的可能

    点赞 评论
  • 小鱼儿码农 2018-05-15 02:06

    不一样的,第一个是嵌套的,第二个是并列的,实现的功能是一样的

    点赞 评论
  • woshishuangjian 2018-05-15 02:11

    这两个语句实现的功能是一样的

    点赞 评论
  • woshishuangjian 2018-05-15 02:14

    判断式放的合理,实现的功能是一样的

    点赞 评论
  • Gson_Angel 2018-05-15 02:41

    不一样,第一个两种逻辑满足if的条件和不满足if的条件,第二三种逻辑满足if条件,满足else if 条件,和不满足两者条件的

    点赞 评论
  • LAO-李 2018-05-15 02:54

    逻辑上是一样的,
    你可以把if(是)
    else if(否)
    else(不明)
    来看两个else if结果一样

    点赞 评论
  • SundayStone 2018-05-15 02:58

    不一样 第一个相当于SWITCH 有DEFAULT 第二个没有

    点赞 评论
  • ~潇洒如风 2018-05-15 03:18

    不一样第一个是不是第一个就是第二个 第二个是第一个不对可以判断下一个 还可以判断下一个 下面还可以跟else if 判断条件 而一个就不行了

    点赞 评论
  • Song947410908 2018-05-15 03:24

    不一样啊,嵌套和并列关系

    点赞 评论
  • 尤夏 2018-05-15 03:31

    不一样,
    第一个是两层if嵌套,有两层if,只有把第一层的if判断了,才能判断第二层的if(也就是表达式2),这两层if都是有两个条件判断:if 和 else。
    第二个只有一个if语句,但是有多个条件判断(三个条件判断):if,else if,else。

    点赞 评论
  • wfzhaoyuwei 2018-05-15 04:41

    具体要看你写的内容是啥了,理论上那个来说,执行逻辑是不一样的

    点赞 评论
  • dragon88888888888 2018-05-15 05:02

    是一样的,只是写法不同,逻辑上一样

    点赞 评论
  • lq七夜 2018-05-15 05:55

    看你的逻辑了,两个if语句都可以实现相同的功能,也可以实现不一样的功能
    但看这两个语句是不一样的

    点赞 评论
  • 说好一起扑成狗 2018-05-15 06:22
    int a = 4;
    if (a > -1 && a < 3)
    {
        printf("表达式1, a = %d\n", a);
    }
    else  
    {
        if (a > -3 && a < 1) 
        {
          printf("表达式2, a = %d\n", a);
        }
        else//没有其他 
        {
          printf("else, a = %d\n", a);
        }
    

    }

    点赞 评论
  • 说好一起扑成狗 2018-05-15 06:31

    辛辛苦苦码了N多字,都没了.想死的心都有.
    经过本人一天的研究,烧死n多脑细胞,结论是两种写法是一样的.
    只写一种if else的三种情况,另一种if else 的三种情况,自己写.
    突然觉得自己很聪明.嘿嘿.

    1)互不相干式:
        int a = 0;// a取 - 2 -1 0 1 2 
        if (a < 0)
        {
            printf("表达式1, a = %d\n", a);
        }
        else 
        {
            if (a > 0)
            {
               printf("表达式2, a = %d\n", a);
            }
            else
            {
              printf("else, a = %d\n", a);
            }
       } 
    2)完全包容式   
        int a = 0;// a 取 0 1  2 3 4 
        if (a > 3)
        {
            printf("表达式1, a = %d\n", a);
        }
        else 
        {
            if (a > 1) 
            {
               printf("表达式2, a = %d\n", a);
            }
            else
            {
              printf("else, a = %d\n", a);
            }
       } 
         3) 相交式
            int a = 0;// a 取 -4 -3 -2 -1 0 1 2 3 4
        if (a > -1 && a < 3)
        {
            printf("表达式1, a = %d\n", a);
        }
        else  
        {
            if (a > -3 && a < 1) 
            {
              printf("表达式2, a = %d\n", a);
            }
            else//没有其他 
            {
              printf("else, a = %d\n", a);
            }
       }  
    
    
    点赞 评论
  • winform小菜鸡 2018-05-15 06:40

    写了一下,想找个证明2个不一样的实例出来结果发现找不到哈。。所以判断为一样的

    点赞 评论
  • garfiledcn 2018-05-15 11:00

    从功能逻辑上看没有区别, 而且编译成汇编看也没有差异

    点赞 评论
  • vu2008goice 2018-05-15 12:24

    不一样,第一个不一定有输出,第二个一定会有输出。

    点赞 评论
  • qq_39743252 2018-05-15 16:55
    完全可以实现一样的效果啊
    
    点赞 评论
  • czl_611 2019-01-04 19:12

    2个if else功能相同

    点赞 评论
  • carman_风 2019-03-13 16:39

    这个取决于表达式 1 和表达式2的 关系 get it ?

    点赞 评论
  • Candy_Sir 2019-05-17 14:59

    效果是一样的,如果讲到什么底层逻辑判断就不一样了

    点赞 评论

相关推荐 更多相似问题