我想改进代码的这一部分,我当时正在考虑将其用于:
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;
答案 0 :(得分:1)
您没有指出变量的数据类型,但是根据上下文,我将假定它们是整数类型。由于所有整数间隔检查都具有相同的“宽度”,因此您可以用一种计算和一种条件替换多个范围检查:
if (NumberOfSensor > 0 && NumberOfSensor < 65)
MaxPageNumber = (NumberOfSensor + 7) / 8;
同样,这假定变量是整数类型。在C语言中,当严格处理整数算术和赋值时,整数除法取结果的 floor ,因此,例如9/8的结果为1。
如果MaxPageNumber
为<= 0或> 64,则您的代码不会更改NumberOfSensor
。因此,如果您希望代码的行为与代码完全相同,则仍然需要if
条件与原始方式相同。
请注意,上述计算结果与其他答案中发布的计算结果相同。任一个都可以。
答案 1 :(得分:0)
我假设NumberOfSensor
是1到64之间的整数。如果是这种情况,则可以简单地使用:
MaxPageNumber = ((NumberOfSensor-1) / 8) + 1;