c/c++语言开发共享将条件检查和变量赋值放在一个if语句中

我正在看一些遗留的C代码并感到困惑,它是这样的:

UINT A, B = 1; if((A = B) == 1){ return(TRUE); } else { return(FALSE); } 

我们都知道如果我们这样做(A = B)会有编译器警告,但是这里看起来’if’正在检查A对1,我是否正确?

    首先,它将B的值分配给AA = B ),然后检查该赋值的结果,即A和求值为1 ,是否等于1

    所以从技术上讲,你是对的:在检查A的方式上是1

    为了使事情更容易阅读,代码相当于:

     UINT A, B = 1; A = B; if(A == 1){ return(TRUE); } else { return(FALSE); } 

    相反,您的代码总是将B分配给A ,而且它还检查B的值(以及A )是否等于1

    关于这一点没有什么“遗产”,如果您需要操作的结果但又想检查错误,这通常是一个非常方便的习惯用法:

     int result; if ((result = foo()) != -1) { printf("The result is: %in", result); } else { // panic } 

    如果你想把它保持在1行:

     if ((A = B), A == 1) 

    做同样的事情。

    正确。 分配后的值A将与1进行比较。

    此代码示例仅相当于:

     return (TRUE); 

    我们试图避免if语句使代码更具可读性。

     UINT A, B = 1; bool fResult = false; fResult = (A == B); return(fResult); 

    如果必须有条件对(非)平等采取行动,请参阅此示例。

    需要了解更多c/c++开发分享将条件检查和变量赋值放在一个if语句中,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

     UINT A, B = 1; bool fResult = false; fResult = (A == B); if(fResult) { doThis(); } else { doThat(); } return(fResult); 

      以上就是c/c++开发分享将条件检查和变量赋值放在一个if语句中相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979204.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐