【问题标题】:Data type for colors in C, i want double/float precision but numbers in range 0-255C中颜色的数据类型,我想要双精度/浮点精度,但数字在0-255范围内
【发布时间】:2019-09-22 04:25:25
【问题描述】:

我有以下用 C 编写的代码

typedef struct{
  unsigned short R,G,B;
}Color;

我想创建一个具有 RGB 颜色范围的数据类型,但我也想让用户可以输入 1.5 或 55.5 等。所以我想出了这个,但这允许从 0-255 的数字而不给它浮点/双精度类型数字的精度。有没有一种方法可以使这成为可能,例如,用户可以输入 0.5,但如果它将 Color 的一个实例初始化为小于 0 或大于 255 的任何值,则编译器会出错?

【问题讨论】:

  • 您希望每种颜色的分辨率是多少?
  • 你的问题有点混乱,也许是困惑。一旦用户使用了一个C程序,编译器就与它无关了,它已经完成了它的工作并休息了。要实现您似乎想要的行为,您必须编写代码。

标签: c graphics colors rgb


【解决方案1】:

如果你想取一个精确的值,你应该将R,G,B声明为floatdouble,而不是unsigned short

而且我不确定您想从编译器中得到哪种类型的错误。如果你想打印,如果超出范围,你可以简单地这样做:

if(value < 0 && value > 255){
    printf("Value is out of range\n");
}

或者如果你想抛出一个运行时错误,你可以这样做:

if(value < 0 && value > 255){
    value = value/0;
}

如果值超出范围,value = value/0 将给出运行时错误。

如果您想了解更多关于在 C 编程语言中抛出异常的信息,您可以查看this link 了解更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2015-02-20
    • 2018-02-23
    • 2012-04-01
    • 1970-01-01
    相关资源
    最近更新 更多