我正在看一些遗留的C代码并感到困惑,它是这样的:
UINT A, B = 1; if((A = B) == 1){ return(TRUE); } else { return(FALSE); }
我们都知道如果我们这样做(A = B)会有编译器警告,但是这里看起来’if’正在检查A对1,我是否正确?
首先,它将B
的值分配给A
( A = 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