我想在程序中将一个char的最大值定义为5。这是一种无需每次都用5进行控制的方法来实现这一点。

最佳答案

不,你不能。数字表示使用位,并且至少在C中,您只能限制给定变量的位数(请参见结构中的位字段),因此对于给定值,您可以获得的最大值始终为2 ^ n-1 。这条路 :

struct small {
    int limited:5; // 5 bits variable
};

int main() {
    struct small s;
    for (s.limited=0; ; s.limited++) {
        printf("%d\n",s.limited);
    }
}


当然,如果需要,您可以将类型更改为unsigned

如果要控制给定变量的范围,则需要定义函数或宏来执行此操作,例如:

#define SET(x,v) { if (v>5) abort(); (x) = (v); }
...
int a;
SET(a,4);
...
SET(a,45);


还有其他可能性,例如使用不透明类型来确保几乎不可能执行错误的值,但难度稍大一些。

07-24 13:53