我在制作一個回圈時遇到問題,當 x 和 y 都在 C 中的范圍/間隔 [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(以及其他一些情況)時,它永遠不會進入回圈。
uj5u.com熱心網友回復:
while ( !( (x>=0 && x<=1) && (y>=0 && y<=1) ) ) 應該是組合條件檢查。
uj5u.com熱心網友回復:
我會去一個有發言權的專用功能:所以你仍然可以在幾周內理解你的代碼:-),例如
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
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386143.html
上一篇:Cpp預定義結構?
下一篇:C 中的記憶體分配
