以下是一些代码,用于检查值是否介于某个范围之间
if((i <= n) && ( (i+m) >= n){
//do something.....
};
Run Code Online (Sandbox Code Playgroud)
这基本上是一个布尔AND条件,如果两个操作数都为真,那么条件的结果为真.但是,对于短路评估,C++只测试第一个条件是否为真,如果是,那么它永远不会检查第二个条件是否为真.在适当的数学意义上,这是一个布尔测试?这完全扰乱了我的代码的逻辑,而是我必须这样写:
if( (i <= n){
if((i+m) >= n){
//do something......
}
}
Run Code Online (Sandbox Code Playgroud)
什么是短路评估的意义,以及如何在不使用嵌套if条件的情况下使C++进行适当的布尔测试.
但是,对于短路评估,C++只测试第一个条件是否为真,如果是,那么它永远不会检查第二个条件是否为真.
情况就是如此||,但不是&&.&&如果第一个条件是短路false.你的两个片段是等价的.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |