Тип данных для цветов в C, я хочу двойную / плавающую точность, но числа в диапазоне 0-255 - PullRequest
0 голосов
/ 03 мая 2019

У меня есть следующий код, написанный на C

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

Я хочу создать тип данных с диапазоном RGB для цветов, но я также хочу, чтобы пользователь мог ввести 1,5 или 55,5 ианалогичный.Итак, я придумал это, но это позволяет числам от 0 до 255 без придания точности чисел типа float / double.Есть ли способ сделать это возможным, чтобы пользователь мог, например, набрать 0,5, но получить ошибку от компилятора, если он инициализирует один из экземпляров Color до значения меньше 0 или больше 255?

1 Ответ

0 голосов
/ 03 мая 2019

Если вы хотите получить значение с точностью, вы должны объявить R,G,B как float или double, а не как 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, вы можете посмотреть эту ссылку для получения дополнительной информации

...