我想改进代码的这一部分,我正在考虑使用:
if((0 < NumberOfSensor) && (NumberOfSensor< 9))MaxPageNumber = 1;
if((8 < NumberOfSensor) && (NumberOfSensor< 17))MaxPageNumber = 2;
if((16 < NumberOfSensor) && (NumberOfSensor< 25))MaxPageNumber = 3;
if((24 < NumberOfSensor) && (NumberOfSensor< 33))MaxPageNumber = 4;
if((32 < NumberOfSensor) && (NumberOfSensor< 41))MaxPageNumber = 5;
if((40 < NumberOfSensor) && (NumberOfSensor< 49))MaxPageNumber = 6;
if((48 < NumberOfSensor) && (NumberOfSensor< 57))MaxPageNumber = 7;
if((56 < NumberOfSensor) && (NumberOfSensor< 65))MaxPageNumber = 8;
您没有指出变量的数据类型,但根据上下文,我假设它们是整数类型。由于所有整数间隔检查都是相同的“宽度”,因此您可以使用计算和一个条件替换多个范围检查:
if (NumberOfSensor > 0 && NumberOfSensor < 65)
MaxPageNumber = (NumberOfSensor + 7) / 8;
同样,这假设变量是整数类型。在C中,当严格处理整数运算和赋值时,整数除法取结果的底限,例如,9/8得到1。
如果MaxPageNumber
<= 0或> 64,则代码不会更改NumberOfSensor
。因此,如果您希望代码的行为与原始代码完全相同,则仍需要if
条件。
请注意,上述计算与另一个答案中公布的计算结果相同。任何一个人都会这样做。
我假设NumberOfSensor
是一个从1到64的整数。如果是这种情况,那么你可以简单地使用:
MaxPageNumber = ((NumberOfSensor-1) / 8) + 1;