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

为什么要在条件中使用作业?

为什么要在条件中使用作业?

在许多语言中,条件分配是合法的。我从不了解背后的原因。你为什么写:if (var1 = var2) {  ...}代替:var1 = var2;if (var1) {  ...
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

对于循环而言,它比if语句更有用。


while( var = GetNext() )

{

  ...do something with var 

}

否则必须写


var = GetNext();

while( var )

{

 ...do something

 var = GetNext();

}


查看完整回答
反对 回复 2019-09-24
?
倚天杖

TA贡献1828条经验 获得超3个赞

我发现它在经常涉及错误检测等操作的一系列动作中最有用。


if ((rc = first_check(arg1, arg2)) != 0)

{

    report error based on rc

}

else if ((rc = second_check(arg2, arg3)) != 0)

{

    report error based on new rc

}

else if ((rc = third_check(arg3, arg4)) != 0)

{

    report error based on new rc

}

else

{

    do what you really wanted to do

}

备选方案(不在条件中使用分配)是:


rc = first_check(arg1, arg2);

if (rc != 0)

{

    report error based on rc

}

else

{

    rc = second_check(arg2, arg3);

    if (rc != 0)

    {

        report error based on new rc

    }

    else

    {

        rc = third_check(arg3, arg4);

        if (rc != 0)

        {

            report error based on new rc

        }

        else

        {

            do what you really wanted to do

        }

    }

}

使用长时间的错误检查,替代方法可以在页面的RHS之外运行,而有条件分配版本则不能这样做。


错误检查也可能是“行动” - ,,first_action() -当然,而不是仅仅检查。即,可以在功能正在管理的过程中检查它们。(在我使用的代码中,大多数情况下,这些功能都是基于前提条件检查,或者功能正常工作所需的内存分配,或者类似的方式)。second_action()third_action()


查看完整回答
反对 回复 2019-09-24
?
FFIVE

TA贡献1797条经验 获得超6个赞

如果要调用一个函数,它会更有用:


if (n = foo())

{

    /* foo returned a non-zero value, do something with the return value */

} else {

    /* foo returned zero, do something else */

}

当然,您可以将n = foo(); 在一个单独的语句上,然后是(n),但是我认为以上是一个易于理解的成语。


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 465 浏览

添加回答

举报

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