我如何针对一个值测试几个变量,并根据C中的结果更改它们?

问题描述 投票:0回答:2

有三个变量需要针对相同的值进行测试(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);

由于它们非常相似,所以我想知道是否有某种方式可以缩短此代码。

c syntax
2个回答
0
投票

由于它们非常相似,所以我想知道是否有某种方式可以缩短此代码。

您可以以某种方式缩短此代码使用宏:

#define LIMIT(v) if (v > 255) v = 255
LIMIT(r);
LIMIT(g);
LIMIT(b);

0
投票

您可以编写函数来执行此操作:

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

然后您可以将变量放入数组中并在其上循环:

int colors[3];

for(int i = 0; i < sizeof(colors)/sizeof(colors[0]); i++)
    saturate(&colors[i]);
© www.soinside.com 2019 - 2024. All rights reserved.