代码之家  ›  专栏  ›  技术社区  ›  João Simões

有没有办法不使用if语句来限制值?

  •  -2
  • João Simões  · 技术社区  · 7 年前

    我正在开发一个能处理图像的程序。 我在调节对比度和亮度的功能上遇到了麻烦。 我需要根据从用户那里收到的输入计算每个RGB组件的值。 问题是,我需要确保计算后的最终值不大于255或小于0。所以它可以放在一个字节内。

    temp = c * dataPtr[0] + b; //variable temp is of type double.
    
    if (temp > 255)
    {
        temp = 255;
    }
    else if (temp < 0)
    {
        temp = 0.0;
    }
    
    dataPtr[0] = (byte)(Math.Round(temp)); 
    

    我对每一个像素的每一个RGB分量重复这个步骤,所以IFS被执行了一百万次,大多数时候都是不必要的。

    我想把一个双字节转换回字节,但它只读取双字节的第一个字节,如果它大于一个字节所能处理的,就不会使值最大化。 有什么明显的方法可以调整这个范围吗?检查一下,我不见了。 谢谢您。

    1 回复  |  直到 7 年前
        1
  •  1
  •   John3136    7 年前

    不。 if 是比较价值的“金本位”方式。如果需要确保值在范围内 如果 就是这样做的。 如果您必须有另一种选择:使用只能处理值0-255的现有类型,但“溢出”行为“定义较少”。如果你做你自己的类型,它可能会用 如果 不管怎样,在里面。

    你的理由“很多不必要的假设”没什么好担心的。