我想在程序中将一个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);
还有其他可能性,例如使用不透明类型来确保几乎不可能执行错误的值,但难度稍大一些。