为了账号安全,请及时绑定邮箱和手机立即绑定

如何理解如下C语言语句的逻辑结构

如何理解如下C语言语句的逻辑结构

C C# C++
JustV 2016-09-19 13:36:31
if (tri->LeftChild)   //条件1 return;     //操作1 if ( tri->BaseNeighbor && (tri->BaseNeighbor->BaseNeighbor != tri) )  //条件2 Split(tri->BaseNeighbor);到return这里没有问题。如果条件1满足,那么结束该方法。关键它与下一个条件结构的逻辑连续上怎么理解。是条件1不满足再去判断条件2?还是条件1满足了,那么执行操作1,然后接下去判断条件2,以此类推?最好能给个流程图,我一直不太懂这样直接顺序写两个if结构还没有else部分的,在逻辑上到底是怎么运行的
查看完整描述

3 回答

已采纳
?
慕函数1130379

TA贡献7条经验 获得超2个赞

从上述代码上理解,条件1满足,则退出执行。在条件一不满足的情况下才会执行条件二。

两个if结构的意思是,只要满足条件,就会进入方法体的执行。

你的思路会乱,是因为操作1的return干扰了你的思路,你可以先把return屏蔽,看作其他代码,比如赋值代码,这样就比较好理解两个if的结构了

查看完整回答
反对 回复 2016-09-19
  • JustV
    JustV
    那和用else把第二个if结构嵌套起来有区别么
  • 慕函数1130379
    慕函数1130379
    在你提供的这个执行代码上,是没区别的,如果操作1不是return就有区别。 使用if else的结构,则条件1不满足之后,才会执行条件2的判断,如果使用 if if的结构,则无论条件1的判断如何,条件2还能在执行
?
Must_so

TA贡献11条经验 获得超18个赞

执行 Split(tri->BaseNeighbor);的条件是:条件1不满足且条件2满足

这很好理解,如果条件1满足则return不会向下执行,所以当条件1不满足才会向下执行下面的语句

而下面的语句则是if语句,满足则执行,不满足不执行

所以上面的代码相当于:

if (tri->LeftChild)   //条件1
    return;     //操作1
 else{
     if ( tri->BaseNeighbor && (tri->BaseNeighbor->BaseNeighbor != tri) )  //条件2
    Split(tri->BaseNeighbor);
    //如果后面还有语句在else内部执行
}


查看完整回答
反对 回复 2016-09-20
?
96hjyd

TA贡献4条经验 获得超1个赞

条件1满足,就return
不满足则判断条件2
两个if是顺序执行的,是不同语句

查看完整回答
反对 回复 2016-09-19
  • JustV
    JustV
    那跟用else把第二个if结构嵌套起来有区别吗
  • 96hjyd
    96hjyd
    可以相当于把return后面的全部语句用else扩起来
  • 96hjyd
    96hjyd
    但是仅在你这个例子的情况下
  • 3 回答
  • 0 关注
  • 1886 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信