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

在许多语言中,条件分配是合法的。我从不了解背后的原因。你为什么写:


if (var1 = var2) {

  ...

}

代替:


var1 = var2;

if (var1) {

  ...


呼唤远方
浏览 466回答 3
3回答

函数式编程

对于循环而言,它比if语句更有用。while( var = GetNext() ){  ...do something with var }否则必须写var = GetNext();while( var ){ ...do something var = GetNext();}

倚天杖

我发现它在经常涉及错误检测等操作的一系列动作中最有用。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()

FFIVE

如果要调用一个函数,它会更有用: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),但是我认为以上是一个易于理解的成语。
打开App,查看更多内容
随时随地看视频慕课网APP