Table of Contents

mod

num mod(num a, num b)

num - any numeric type (int or fixed)

Description

This function implements modulo division a % b, but, unlike the ACS operator, it handles negative values of a like mathematical modulo, making a cycle around on the range [0, b).

This makes its result safe to use an array index, as the result is not negative for negative values of a.

Only positive values of b are supported.

Examples

mod(-5, 3) -> 1
mod(-4, 3) -> 2
mod(-3, 3) -> 0
mod(-2, 3) -> 1
mod(-1, 3) -> 2
mod(0, 3) -> 0
mod(1, 3) -> 1
mod(2, 3) -> 2
mod(3, 3) -> 0
mod(4, 3) -> 1
mod(5, 3) -> 2

Using mod to implement menu cycling easily:

if (KeyPressed(BT_DOWN))
    menuindex++;
if (KeyPressed(BT_UP))
    menuindex--;
    
menuindex = mod(menuindex, NUM_MENU_ITEMS);