我想定义一个名为Int_1_100_Type
的类型,它是一个integer
变量,范围从1到100。
我该如何定义这个呢?
例如:
我将此变量传递给接受Int_1_100_Type
类型变量的函数,
funca(Int_1_100_Type Var1)
答案 0 :(得分:5)
你不能,C没有这样的功能。你当然可以输入一个int:
typedef int int_1_100_Type;
但是无法限制其范围。在C ++中,您可以使用此功能创建一个新类型,但我认为很少有人会打扰 - 您只需要在使用该类型的函数中放置范围检查。
答案 1 :(得分:4)
当然可以。您只需要一个基于对象的小C。
使用结构和一些成员
创建一个文件typedef struct s_foo {
int member;
} Foo;
Foo* newFoo(int input); // ctor
void get(Foo *f); // accessor
在mutator / ctor中强制执行你的病情
如果你在自己的文件中这样做,你也可以隐藏类的impl,你可以做oo-like C
答案 2 :(得分:1)
你不能把这种限制放在整数的范围内。
无论如何你当然可以typedef
:
typedef int int_1_100;
甚至更好:
typedef unsigned int int_1_100;
但是C中的任何内容都不会阻止你写作:
int_1_100 x = 1000;
要实现类似的东西,你需要隐藏实现,但这会使初始化值变得更加困难(并且不可能在堆栈上分配类型的值,隐藏完整)。
答案 3 :(得分:0)
在C ++中,有一种方法可以通过编写一个类似于整数的类来实现这一点,但这将是太多的努力和太重量级的解决方案才能实用。
感谢Naveen指出问题只是C。
答案 4 :(得分:0)
c中无法定义必须在特定范围内的类型。但是,您可以检查函数中的每个值,例如
int funca(int Var1)
{
assert(Var1 >= 1);
assert(Var1 < 101);
...
}