如何进行循环以确定2个数字是否属于给定范围

How to make a loop to determine if 2 numbers belong in a given range

我在制作循环时遇到问题,当 x 和 y 都在 c++ 中的 range/interval [0,1] 时停止。

double x;
double y;

while(condition)
{
    if(x < 0)
    {
        x = -x;
    }
    else
    {
        x = 2 - x;
    }
    if(y < 0)
    {
        y = -y;
    }
    else
    {
        y = 2 - y;
    }

}

这个有 2 个循环的方法有效:

while((x < 0) || (x > 1)) {do sth}
while((y < 0) || (y > 1)) {do sth}

这行不通:

while(!((x >= 0) && (x <= 1)) && !((y >= 0) && (y <= 1))) {do sth}

这也行不通:

while(((x < 0) || (x > 1)) && ((y < 0) || (y > 1))) {do sth}

这形成了一个无限循环(在我的例子中):

while(((x < 0) || (x > 1)) || ((y < 0) || (y > 1))) {do sth}

注意:如果需要,{do sth} 会更改 x 和 y,因此它们最终会进入该间隔(与第一段代码相同)。

注意 2:By 不起作用我的意思是当 x 在区间内且 y < 0(以及其他一些情况)时它永远不会进入循环。

while ( !( (x>=0 && x<=1) && (y>=0 && y<=1) ) ) 应该是组合条件检查。

我会选择一个有名字的专用功能:这样您仍然可以在几周内理解您的代码:-),例如

  auto check_outside_interval_0_1 = [] (double const a) {
    return a < 0.0 or 1.0 < a;
  };

  while( check_outside_interval_0_1(x) or
         check_outside_interval_0_1(y) ) {
     // ... do your things here
  }