Как проверить несколько переменных на значение и изменить их на основе результата в C? - PullRequest
0 голосов
/ 20 марта 2020

Есть три переменные, которые необходимо проверить на одно и то же значение (var1 или var2 или var3> 255). Если сравнение верно для любого из них, значение соответствующей переменной должно быть установлено равным 255. Вот что я придумал:

if (r > 255)
    r = 255;
if (g > 255)
    g = 255;
if (b > 255)
    b = 255;

и

r += (r > 255) * (255 - r);
g += (g > 255) * (255 - g);
b += (b > 255) * (255 - b);

Так как они довольно похоже, поэтому мне было интересно, есть ли способ как-то сократить этот код.

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Вы можете написать функцию для этого:

void saturate(int *p)
{
    if(*p > 255)
        *p = 255;
}

Затем вы можете поместить свои переменные в массив и l oop сверх этого:

int colors[3];

for(int i = 0; i < sizeof(colors)/sizeof(colors[0]); i++)
    saturate(&colors[i]);
1 голос
/ 20 марта 2020

Поскольку они очень похожи, поэтому мне было интересно, есть ли способ как-то сократить этот код.

Вы можете сократить этот код каким-либо образом , используя макрос:

#define LIMIT(v) if (v > 255) v = 255
LIMIT(r);
LIMIT(g);
LIMIT(b);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...