首页 > 解决方案 > 如何针对一个值测试多个变量并根据 C 中的结果更改它们?

问题描述

需要针对相同的值(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);

由于这些非常相似,所以我想知道是否有办法以某种方式缩短此代码。

标签: csyntax

解决方案


由于这些非常相似,所以我想知道是否有办法以某种方式缩短此代码。

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

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

推荐阅读