0

我的问题是要限制数据类型的最大范围,以免超过它的最大值。例如:

 unsigned char var1;

在这种情况下,最小值为var10,最大值为var1255。

在我的情况下,var1200-255 是保留值,因此出于安全原因,有必要不要输入这些值。

我的问题是,C 是否有任何实现方法来限制原始数据类型范围。

谢谢。

4

1 回答 1

1

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.  

这是非常原始的,但至少应该为您指明正确的方向。如果您需要为浮点执行此操作,您将需要更强大的方法。

于 2020-08-05T17:33:44.293 回答