Можно ли ограничить диапазон типов данных C - PullRequest
0 голосов
/ 05 августа 2020

Мой вопрос о том, чтобы ограничить максимальный диапазон типа данных, чтобы не превышать его максимальное значение. Например:

 unsigned char var1;

В этом случае минимальное значение для var1 равно 0, максимальное значение для var1 равно 255.

В моем случае для var1 200-255 являются зарезервированное значение, поэтому необходимо не вводить эти значения по соображениям безопасности.

Мой вопрос, есть ли какой-либо метод реализации для C, чтобы ограничить диапазон примитивных типов данных.

Спасибо.

1 Ответ

1 голос
/ 05 августа 2020

Философия, лежащая в основе C, заключается в том, что программист лучше всех знает, нужно ли выполнять проверку диапазона, и достаточно умен, чтобы при необходимости написать его. В стандартной библиотеке нет ничего, что сделало бы это за вас.

Вы можете написать простой макрос для теста (проще, чем вводить фактическое выражение, и он сортирует документы именно то, что вы делаете) :

#define RANGE_CHECK(val,lo,hi) ((lo) <= (val) && (val) <= (hi)) // inclusive range check

и при необходимости вызовите его:

if ( RANGE_CHECK( x, 0, 200 ) )
  // do something with x
else
  // range violation, handle as necessary.  

Это чрезвычайно примитив, но он должен, по крайней мере, указать вам в правильном направлении. Если вам нужно сделать это для чисел с плавающей запятой, вам понадобится что-то более надежное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...