如何将以下代码从if语句更改为switch。是否可以按照下面显示的顺序增加速度[0](0,0,0,1,1,1,2,2,2,2)
变量节点是类型对象。

if (node->speed[0] > system->velocity)
    node->speed[0] = pSystem->velocity;
else if (node->speed[0] < pSystem->nVelocity)
    node->speed[0] = pSystem->nVelocity;
if (node->speed[1] > pSystem->velocity)
    node->speed[1] = pSystem->velocity;
else if (node->speed[1] < pSystem->nVelocity)
    node->speed[1] = pSystem->nVelocity;
if (node->speed[2] > pSystem->velocity)
    node->speed[2] = pSystem->velocity;
else if (node->speed[2] < pSystem->nVelocity)
    node->speed[2] = pSystem->nVelocity;

最佳答案

在比较中没有有意义的方法来生成switch,但是我将重写如下内容(假设第一行中的“系统”实际上应该是“ pSystem”):

int clamp(int x, int min, int max)
{
    if (x < min)
        return min;
    if (x > max)
        return max;
    return x;
}

for (int i = 0; i<3 ; ++i)
  node->speed[i] = clamp(node->speed[i], pSystem->nVelocity, pSystem->velocity);


旁注:看来您已经切换了“速度”和“速度”的含义。
速度是矢量,具有方向和大小,而速度是标量-速度的大小。

10-05 20:25