用C定义整数范围

时间:2010-04-14 12:09:26

标签: c typedef

我想定义一个名为Int_1_100_Type的类型,它是一个integer变量,范围从1到100。 我该如何定义这个呢? 例如: 我将此变量传递给接受Int_1_100_Type类型变量的函数, funca(Int_1_100_Type Var1)

5 个答案:

答案 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);
    ...
}