Я хочу определить тип с именем Int_1_100_Type
, который является переменной integer
в диапазоне от 1 до 100.
Как я могу определить это?
например:
Я передаю эту переменную функции, которая принимает переменную типа Int_1_100_Type
,
funca(Int_1_100_Type Var1)
Определить целые диапазоны в C
Ответ 1
Вы не можете, C не имеет такой функциональности. Вы можете, конечно, typedef int:
typedef int int_1_100_Type;
но нет возможности ограничить его диапазон. В С++ вы можете создать новый тип с этой функциональностью, но я думаю, что очень немногие люди будут беспокоиться - вам просто нужно поместить проверки диапазона в функции, которые используют этот тип.
Ответ 2
Конечно, вы можете. Все, что вам нужно, это немного основанный на объектах C.
создать файл со структурой и некоторыми членами
typedef struct s_foo {
int member;
} Foo;
Foo* newFoo(int input); // ctor
void get(Foo *f); // accessor
Обеспечьте свое состояние в мутаторе /ctor
Если вы сделаете это в своем собственном файле, вы можете скрыть и имплемент класса, вы можете сделать о-подобный C
Ответ 3
Вы не можете установить такой предел для диапазона целого числа.
Конечно, вы можете typedef
:
typedef int int_1_100;
или даже лучше:
typedef unsigned int int_1_100;
Но ничто в C не позволит вам писать:
int_1_100 x = 1000;
Чтобы реализовать что-то подобное, вам нужно скрыть реализацию, но это усложнит инициализацию значения (и невозможно выделить значения типа в стеке, с сохранением целостности).
Ответ 4
В С++ был бы способ сделать это, написав класс, который будет действовать как целое число, но это будет слишком много усилий и слишком тяжело, чтобы решение было практичным.
Спасибо Naveen за то, что он указал, что вопрос был только C.
Ответ 5
Нет способа в c определить тип, который должен находиться в определенном диапазоне. Тем не менее, вы можете проверить каждое значение в своих функциях, например.
int funca(int Var1)
{
assert(Var1 >= 1);
assert(Var1 < 101);
...
}