今天阅读《Windows程序设计》,发现几段简洁而经典的代码,描述了如何在某个限定范围递增/递减一个值。现摘抄出来以飨读者。
- 限定最小值
case VK_UP:
yCaret = max (yCaret - 1, 0) ;
break ;
以上算法为:yCaret自减1,同时不能小于0.
- 限定最大值
case VK_RIGHT:
xCaret = min (xCaret + 1, cxBuffer - 1) ;
break ;
以上算法为:xCaret自加1,同时不能大于cxBuffer-1。
- 限定最大与最小值
x = max (0, min (DIVISIONS - 1, point.x / cxBlock)) ;
y = max (0, min (DIVISIONS - 1, point.y / cyBlock)) ;
以上算法限定了point.x / cxBlock的范围为[0,DIVISIONS - 1].