我的问题是要限制数据类型的最大范围,以免超过它的最大值。例如:
unsigned char var1;
在这种情况下,最小值为var1
0,最大值为var1
255。
在我的情况下,var1
200-255 是保留值,因此出于安全原因,有必要不要输入这些值。
我的问题是,C 是否有任何实现方法来限制原始数据类型范围。
谢谢。
C 背后的哲学是程序员最能知道是否需要执行范围检查,并且在必要时足够聪明地编写它。标准库中没有任何内容可以为您执行此操作。
您可以为测试编写一个简单的宏(比输入实际表达式更容易,并且它可以准确地记录您正在做的事情):
#define RANGE_CHECK(val,lo,hi) ((lo) <= (val) && (val) <= (hi)) // inclusive range check
并根据需要调用它:
if ( RANGE_CHECK( x, 0, 200 ) )
// do something with x
else
// range violation, handle as necessary.
这是非常原始的,但至少应该为您指明正确的方向。如果您需要为浮点执行此操作,您将需要更强大的方法。